隐蔽通信
隐蔽通信原理
我们的防火墙一般是不会去拦截这些通信的,也正是不会被拦截所以我们需要用到这些协议来去传递我们的数据。
隐蔽通信(Covert Communication)是指在通信过程中,通过隐蔽的方式传输信息,使得第三方难以察觉通信的存在或内容。隐蔽通信在信息安全领域有着广泛的应用,既可以用于合法的安全通信,也可能被滥用进行非法活动。以下是隐蔽通信的一些基本原理和常用技术。
隐蔽通信的基本原理
隐蔽通信的核心在于隐藏通信的存在或内容,使通信双方能够在不被察觉的情况下交换信息。其主要原理包括以下几个方面:
- 信息隐藏:将信息嵌入到看似无害的数据中,使得第三方即使截获数据也难以发现隐藏的信息。
- 信道选择:选择非常规的通信信道,例如使用 DNS 请求响应、ICMP 协议等,这些信道通常被认为是正常的网络流量。
- 频率和时间控制:通过对通信频率和时间的控制来降低被检测的风险,例如随机化发送间隔、使用特定的时间窗口进行通信等。
- 加密和解密:使用高强度的加密算法保护通信内容,即使被截获也难以解读。
常见的隐蔽通信技术
- 隐写术(Steganography):
- LSB 替换:将信息隐藏在图像、音频或视频文件的最低有效位(Least Significant Bit, LSB)中。
- 载体文件:将信息嵌入到一个合法的文件中,例如在 PDF 文档的元数据中隐藏信息。
- 文本隐写:在文本中嵌入隐藏信息,例如通过改变字母大小写、空格等。
- 隐蔽信道(Covert Channel):
- 带外信道:利用非传统数据传输机制,例如通过 DNS 请求和响应来传输数据。
- 时间信道:利用时间间隔来传输信息,例如通过特定的时间间隔发送 ICMP 回显请求。
- 频率信道:利用频率变化来传输信息,例如通过改变网络流量的模式来传达信息。
- 加密技术:
- 对称加密:使用相同的密钥进行加密和解密。
- 非对称加密:使用公钥加密、私钥解密,确保只有持有私钥的一方才能解密信息。
- 混合加密:结合对称加密和非对称加密,提高通信的安全性和效率。
- 协议伪装:
- HTTP/HTTPS 流两伪装:将数据伪装成普通的 HTTP/HTTPS 请求和响应。
- SSL/TLS 隧道:使用 SSL/TLS 加密隧道传输数据,隐藏通信内容。
示例
1. 使用 LSB 替换
假设你想将一条秘密消息隐藏在一张图片中:
- 准备消息:
- 将消息转换为二进制格式。
- 例如,消息 "Hello" 可以转换为二进制形式。
- 替换图片的 LSB:
- 读取图片的像素值。
- 将消息的二进制位替换到每个像素的最低有效位中。
- 生成隐藏信息的图片:
- 保存修改后的图片。
- 提取信息:
- 读取隐藏信息的图片。
- 提取每个像素的最低有效位。
- 组合得到原始消息。
2. 使用 DNS 请求
假设你想通过 DNS 请求发送一个秘密消息:
- 构建 DNS 请求:
- 将消息转换为十六进制或 Base64 编码。
- 构建一个 DNS 查询请求,其中包含编码后的消息。
- 发送 DNS 请求:
- 发送包含隐藏消息的 DNS 请求。
- 接收 DNS 响应:
- 监听 DNS 响应,并从中提取隐藏的消息。
总结
隐蔽通信是一种复杂的通信技术,旨在隐藏通信的存在或内容。它可以通过多种技术和手段实现,既可用于合法的安全通信,也需要防范其被滥用。理解和掌握隐蔽通信的基本原理和技术,有助于提高信息安全水平。在实际应用中,应确保遵守法律法规,并在合法的测试环境中进行相关实验。
当tcp、udp协议无法访问内网的时候可以用icmp协议来测试一下内网的联通性。
curl 是一个利用cul规则在命令行下工作的综合性文件传输工具。curl命令它不仅支持http、https、ftp、还支持特殊的hpptpost、cookie认证等。所以这个命令在很多时候还是非常的好用的。
curl
是一个非常强大的命令行工具,用于传输数据。它可以用于多种协议,如 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP 或 FILE 等。curl
主要用于从服务器获取或发送数据,常用于脚本编写和自动化任务。
curl 的基本语法
1curl [选项] [URL]
curl 的常见选项
-X, --request <command>
:指定请求类型(GET、POST、PUT 等)。-d, --data <data>
:发送 POST 数据。-H, --header <line>
:自定义请求头。-o, --output <file>
:将输出保存到指定文件。-O, --remote-name
:保存远程文件的名字。-L, --location
:跟随重定向。-u, --user <user:password>
:指定用户名和密码进行认证。-v, --verbose
:显示详细的调试信息。-s, --silent
:静默模式,不显示进度条等信息。-i, --include
:包含 HTTP 头部信息在输出中。-A, --user-agent <agent>
:设置用户代理。-T, --upload-file <file>
:上传文件。-J, --remote-header-name
:使用从 HTTP 头部获取的文件名。-b, --cookie <name=value>
:设置 cookie。-c, --cookie-jar <filename>
:将 cookie 存储到文件。-e, --referer <url>
:设置 referer。-k, --insecure
:允许使用不受信任的 SSL 证书。--data-urlencode <data>
:发送 POST 数据,并进行 URL 编码。--form <formdata>
:发送多部分表单数据。--progress-bar
:显示进度条。--retry <times>
:重试失败的传输。
示例用法
1. 下载文件
1curl https://example.com/file.zip -o file.zip
这将从 https://example.com/file.zip
下载文件,并保存为 file.zip
。
2. 发送 GET 请求
1curl https://api.example.com/data
这将从 API 端点获取数据。
3. 发送 POST 请求
1curl -X POST -d "key1=value1&key2=value2" https://api.example.com/data
这将向 https://api.example.com/data
发送一个 POST 请求,并附带表单数据。
4. 设置请求头
1curl -H "Content-Type: application/json" -H "Authorization: Bearer token" https://api.example.com/data
这将向 API 端点发送一个带有自定义请求头的请求。
5. 上传文件
1curl -T file.txt ftp://example.com/path/to/upload
这将通过 FTP 协议上传 file.txt
到服务器。
6. 跟随重定向
1curl -L https://example.com/redirect
这将跟随重定向链接。
7. 设置用户代理
1curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" https://example.com
这将模拟一个浏览器的用户代理。
更复杂的用法
8. 通过 SSL 证书进行认证
1curl --cert client.pem --key key.pem https://example.com/secure
这将使用客户端证书进行 SSL 认证。
9. 使用基本认证
1curl -u username:password https://example.com/secure
这将使用基本认证访问资源。
10. 使用 cookie
1curl -b "sessinotallow=abc123" https://example.com/profile
这将携带 cookie 访问资源。
总结
curl
是一个非常灵活且功能强大的工具,适用于多种场景,如数据抓取、API 测试、文件上传下载等。通过不同的选项组合,curl
可以满足各种需求。
练习
在kali中开一个http服务
curl 192.168.231.130:9999
访问成功了
nslookup www.baidu.com 8.8.8.8
nslookup
(Name Server Lookup)是一个用于查询域名系统(DNS)信息的命令行工具。它可以帮助你诊断 DNS 解析问题,查看域名对应的 IP 地址,检查 DNS 服务器的状态,以及获取其他相关的 DNS 信息。
基本语法
1nslookup [选项] [hostname | IP 地址]
常见选项
-debug
:启用调试模式。-query=query_type
:指定查询类型,例如 A(IPv4 地址)、AAAA(IPv6 地址)、MX(邮件交换)、TXT(文本记录)等。-server=server_address
:指定要使用的 DNS 服务器地址。-port=port_number
:指定 DNS 服务器的端口号,默认为 53。
基本用法
- 查询域名的 IP 地址:
1nslookup www.example.com
输出示例:
1Server: UnKnown
2Address: 192.168.1.1
3
4Non-authoritative answer:
5Name: www.example.com
6Addresses: 93.184.216.34
- 指定 DNS 服务器:
1nslookup -server 8.8.8.8 www.example.com
这将使用 Google 的公共 DNS 服务器来查询 www.example.com
的 IP 地址。
- 查询特定类型的记录:
- 查询 A 记录(IPv4 地址):
1nslookup -query=A www.example.com
- 查询 AAAA 记录(IPv6 地址):
1nslookup -query=AAAA www.example.com
- 查询 MX 记录(邮件交换):
1nslookup -query=MX example.com
- 查询 TXT 记录(文本记录):
1nslookup -query=TXT example.com
- 交互式模式:你还可以进入
nslookup
的交互式模式,进行更复杂的查询:
1nslookup
进入交互模式后,你可以执行以下命令:
- 查询域名:
1> set type=a
2> www.example.com
3Server: UnKnown
4Address: 192.168.1.1
5
6Non-authoritative answer:
7Name: www.example.com
8Addresses: 93.184.216.34
- 更改 DNS 服务器:
1> server 8.8.8.8
2Default server: 8.8.8.8
- 退出交互模式:
1> exit
实际应用示例
1. 查询域名的 A 记录
1nslookup -query=A www.example.com
2. 查询域名的 MX 记录
1nslookup -query=MX example.com
3. 使用特定的 DNS 服务器查询
1nslookup -server 8.8.8.8 www.example.com
4. 查询域名的 TXT 记录
1nslookup -query=TXT example.com
5. 进入交互模式查询
1nslookup
2> set type=a
3> www.example.com
4> server 8.8.8.8
5> exit
总结
nslookup
是一个非常有用的工具,用于诊断 DNS 解析问题和获取 DNS 相关信息。通过不同的选项和命令,你可以查询不同类型的 DNS 记录,使用特定的 DNS 服务器,甚至进入交互模式进行更复杂的查询
会到这个目录下查看读取我们配置的服务器地址
dig命令
dig www.baidu.com
dig 8.8.8.8 www.baidu.com#这就是8.8.8.8所记录的有关百度的域名解析信息,这种方式会经常运用到子域名的查询和反查
dig
(Domain Information Groper)是一个非常强大的命令行工具,用于查询 DNS 服务器以获取有关域名的信息。它比 nslookup
更加灵活和功能丰富,常用于诊断 DNS 解析问题、查看域名对应的 IP 地址以及其他 DNS 相关的信息。
基本语法
1dig [选项] [hostname | IP 地址]
常见选项
-t <record_type>
或@<server>
:指定查询的记录类型或使用的 DNS 服务器。-x <IP 地址>
:进行反向 DNS 查找。+short
:仅显示查询结果的 IP 地址或其他数据,不显示其他额外信息。+noall +answer
:仅显示查询结果中的回答部分。+trace
:显示递归查询的完整跟踪信息。+time=<seconds>
:设置超时时间。+retry=<retries>
:设置重试次数。+nocmd
:禁用命令行参数处理。+noedns
:禁用 EDNS0 扩展。+bufsize=<size>
:设置 UDP 缓冲区大小。+nocookie
:禁用 cookie 功能。+nostats
:不显示统计信息。+nocomment
:不显示注释信息。+noid
:不显示 ID 信息。
基本用法
- 查询域名的 A 记录(IPv4 地址):
1dig www.example.com
输出示例:
1; <<>> DiG 9.11.3-1ubuntu1.16-Ubuntu <<>> www.example.com
2;; global options: +cmd
3;; Got answer:
4;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50553
5;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
6
7;; OPT PSEUDOSECTION:
8; EDNS: version: 0, flags:; udp: 4096
9;; QUESTION SECTION:
10;www.example.com. IN A
11
12;; ANSWER SECTION:
13www.example.com. 300 IN A 93.184.216.34
14
15;; Query time: 40 msec
16;; SERVER: 127.0.0.53#53(127.0.0.53)
17;; WHEN: Thu Sep 5 23:55:03 UTC 2024
18;; MSG SIZE rcvd: 62
- 查询域名的 AAAA 记录(IPv6 地址):
1dig -t AAAA www.example.com
输出示例:
1; <<>> DiG 9.11.3-1ubuntu1.16-Ubuntu <<>> -t AAAA www.example.com
2;; global options: +cmd
3;; Got answer:
4;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39853
5;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
6
7;; OPT PSEUDOSECTION:
8; EDNS: version: 0, flags:; udp: 4096
9;; QUESTION SECTION:
10;www.example.com. IN AAAA
11
12;; ANSWER SECTION:
13www.example.com. 300 IN AAAA 2606:2800:220:1:248:1893:25c8:1946
14
15;; Query time: 39 msec
16;; SERVER: 127.0.0.53#53(127.0.0.53)
17;; WHEN: Thu Sep 5 23:55:13 UTC 2024
18;; MSG SIZE rcvd: 82
- 查询域名的 MX 记录(邮件交换):
1dig -t MX example.com
输出示例:
1; <<>> DiG 9.11.3-1ubuntu1.16-Ubuntu <<>> -t MX example.com
2;; global options: +cmd
3;; Got answer:
4;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51145
5;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
6
7;; OPT PSEUDOSECTION:
8; EDNS: version: 0, flags:; udp: 4096
9;; QUESTION SECTION:
10;example.com. IN MX
11
12;; ANSWER SECTION:
13example.com. 3600 IN MX 10 mail.example.com.
14
15;; Query time: 39 msec
16;; SERVER: 127.0.0.53#53(127.0.0.53)
17;; WHEN: Thu Sep 5 23:55:23 UTC 2024
18;; MSG SIZE rcvd: 62
- 查询域名的 TXT 记录(文本记录):
1dig -t TXT example.com
输出示例:
1; <<>> DiG 9.11.3-1ubuntu1.16-Ubuntu <<>> -t TXT example.com
2;; global options: +cmd
3;; Got answer:
4;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36178
5;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
6
7;; OPT PSEUDOSECTION:
8; EDNS: version: 0, flags:; udp: 4096
9;; QUESTION SECTION:
10;example.com. IN TXT
11
12;; ANSWER SECTION:
13example.com. 3600 IN TXT "v=spf1 mx ip4:93.184.216.34/32 ~all"
14
15;; Query time: 39 msec
16;; SERVER: 127.0.0.53#53(127.0.0.53)
17;; WHEN: Thu Sep 5 23:55:33 UTC 2024
18;; MSG SIZE rcvd: 100
- 指定 DNS 服务器查询:
1dig @8.8.8.8 www.example.com
输出示例:
1; <<>> DiG 9.11.3-1ubuntu1.16-Ubuntu <<>> @8.8.8.8 www.example.com
2; (1 server found)
3;; global options: +cmd
4;; Got answer:
5;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53472
6;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
7
8;; OPT PSEUDOSECTION:
9; EDNS: version: 0, flags:; udp: 4096
10;; QUESTION SECTION:
11;www.example.com. IN A
12
13;; ANSWER SECTION:
14www.example.com. 300 IN A 93.184.216.34
15
16;; Query time: 39 msec
17;; SERVER: 8.8.8.8#53(8.8.8.8)
18;; WHEN: Thu Sep 5 23:55:43 UTC 2024
19;; MSG SIZE rcvd: 62
- 反向 DNS 查找:
1dig -x 93.184.216.34
输出示例:
1; <<>> DiG 9.11.3-1ubuntu1.16-Ubuntu <<>> -x 93.184.216.34
2;; global options: +cmd
3;; Got answer:
4;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59818
5;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
6
7;; OPT PSEUDOSECTION:
8; EDNS: version: 0, flags:; udp: 4096
9;; QUESTION SECTION:
10;34.216.184.93.in-addr.arpa. IN PTR
11
12;; ANSWER SECTION:
1334.216.184.93.in-addr.arpa. 300 IN PTR www.example.com.
14
15;; AUTHORITY SECTION:
1634.216.184.93.in-addr.arpa. 300 IN NS ns1.example.com.
17
18;; Query time: 39 msec
19;; SERVER: 127.0.0.53#53(127.0.0.53)
20;; WHEN: Thu Sep 5 23:55:53 UTC 2024
21;; MSG SIZE rcvd: 92
实际应用示例
1. 查询域名的 A 记录
1dig www.example.com
2. 查询域名的 AAAA 记录
1dig -t AAAA www.example.com
3. 查询域名的 MX 记录
1dig -t MX example.com
4. 查询域名的 TXT 记录
1dig -t TXT example.com
5. 使用特定的 DNS 服务器查询
1dig @8.8.8.8 www.example.com
6. 反向 DNS 查找
1dig -x 93.184.216.34
总结
dig
是一个功能强大的 DNS 查询工具,可以用于诊断 DNS 解析问题、获取域名的详细信息以及其他相关的 DNS 信息。通过不同的选项和命令,你可以查询不同类型的 DNS 记录,使用特定的 DNS 服务器,甚至进行反向 DNS 查找。