Egress-Assess 是一款用于测试出站数据检测能力的工具。
要设置,请运行附带的安装脚本,或执行以下操作:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
相关博客文章可在此处获取:
Egress-Assess 的典型用法是将此工具复制到两个位置。一个位置充当服务器,另一个充当客户端。Egress-Assess 可以通过 FTP、HTTP 和 HTTPS 发送数据。
要通过 FTP 提取数据,首先需要启动 Egress-Assess 的 FTP 服务器,选择 --server ftp 并提供一个用户名和密码:
./Egress-Assess.py --server ftp --username testuser --password pass123
现在,要让客户端连接并向 FTP 服务器发送数据,可以运行...
./Egress-Assess.py --client ftp --username testuser --password pass123 --ip 192.168.63.149 --datatype ssn
此外,你也可以将 Egress-Assess 设置为 Web 服务器,运行...
./Egress-Assess.py --server https
然后,要向 FTP 服务器发送数据,并专门发送 15 兆的信用卡数据,运行以下命令...
./Egress-Assess.py --client https --data-size 15 --ip 192.168.63.149 --datatype cc
其他注意事项:
SMTP - 客户端创建一封邮件,将数据放在邮件正文中,如果是文件则作为附件。然后客户端尝试通过端口 25(或提供的备用端口)向 EgressAssess 服务器建立 SMTP 连接。SMTP 服务器不要求身份验证,接受传入连接并处理邮件。邮件的处理过程是从邮件正文或附件文件中提取数据。此测试不会尝试通过组织的邮件服务器发送邮件。
SMTP_Outlook – (此模块仅在 PowerShell 客户端中可用)。如果之前已配置好 Outlook 客户端,PowerShell 客户端会创建一个指向 Outlook 的 COM 对象(根据配置,可能需要用户提供身份验证)。然后 PowerShell 客户端将创建一封邮件,将数据放在邮件正文中,如果是文件则作为附件。邮件将从 Outlook 以之前配置的用户身份发送。(某些安全设置可能会通知用户有程序尝试在后台发送邮件,需要用户选择允许)。要使此模块工作,需要为 EgressAssess 服务器创建 MX 记录。EgressAssess SMTP 服务器接受发送到 MX 记录域名的所有邮件,并接收包含文件附件或正文中测试数据的邮件。
Invoke-EssessAgress -Client SMTPOutlook -IP <SMTP 服务器的域名> -NoPing -DataType "ssn"
ICMP - 数据被分解为字节并进行 base64 编码,通过 ICMP Type 8 ECHO 请求发送到网络中。数据被放置在数据包的数据字段中。ECHO 请求持续发送到 EgressAssess 服务器,服务器接收 ICMP 请求,收集数据并解码。
FTP - 数据和文件按照典型协议使用方式上传到 EgressAssess FTP 服务器。需要使用用户名和密码访问服务器。请参阅上面的示例。
SFTP - 数据和文件按照 SFTP 协议上传。需要使用用户名和密码访问服务器。
HTTP(S) - 数据和文件通过 POST Web 请求发送到 EgressAssess Web 服务器。对于 Python 客户端,数据被 POST 到 http(s)://<IP 或 FQDN>/post_data.php;对于 PowerShell 客户端,数据被 POST 到 http(s)://<IP 或 FQDN>/posh_file.php。
SMB - EgressAssess 服务器(使用 Impacket 的 SimpleSMBserver)创建一个 /TRANSFER SMB 共享。客户端系统无需身份验证即可连接到该共享并传输文件,就像连接到网络共享并复制文件一样。如果需要,也可以选择添加用户名和密码进行身份验证。如上所述,请根据您要出网的系统及其安全策略,确定是使用旧的有漏洞的 SMBv1 还是需要启用 SMBv2。
DNS_TXT - 数据和文件被分解为字节,然后转换为 base64,并分块为单独的 DNS TXT 查询,针对 IP 地址或域名进行查询。客户端尝试直接连接到 EgressAssess 服务器并发出 DNS TXT 查询。服务器随后从数据包中过滤出数据并解码。在 PowerShell 客户端中,有一个堆叠查询的选项。这会在每个 DNS 请求中向服务器发出最多 7 个 TXT 查询,从而提高数据外传的速度。
DNS_Resolved - 数据和文件被分解为字节,然后转换为 base64。数据随后被分块,并用作 DNS 请求的一部分来解析子域名:<编码数据>.domain.com。为此,需要为 EgressAssess 服务器设置一个该域名的 NS 记录。所有 DNS 请求都发送到系统设置的名字服务器,最终到达之前设置好的 EgressAssess 服务器。EgressAssess 服务器从每个请求中提取数据部分,并将文件重新组装起来。