免责声明:本文仅作分享!
题目思路贴合一线实战,总结复盘一下。(当然做题归做题,玩法还是很多的)
目录
附件
畸形的爱--拓扑&资产
畸形的爱--题目
1.提交攻击者使用的攻击ip地址1
2.提交攻击者使用的攻击ip地址2
3.题解攻击者暴力破解开始时间
4.提交攻击者留下的flag1
5.提交攻击者留下的flag2
6.提交攻击者留下的flag3
7.提交钓鱼文件的哈希32位大写
8.提交攻击者留下的webshell-1密码
9.提交攻击者开放端口
10.提交攻击者留下的webshell密码2
11.提交攻击者留下的隐藏账户的密码
12.[溯源]攻击者的邮箱
13.提交溯源后得到的flag
应急响应--拓扑&资产
应急响应--题目
1.提交堡垒机中留下的flag
2.提交WAF中隐藏的flag
3.提交Mysql中留下的flag
4.提交攻击者的攻击IP
5.提交攻攻击者最早攻击时间
6.提交web服务泄露的关键文件名
7.提交泄露的邮箱地址
8.提交立足点服务器ip地址
9.提交攻击者使用的提权用户密码
10.提交攻击者留下的的文件内容
11.提交权限维持方法服务的名称
12.提交攻击者攻击恶意服务器连接地址
13.找到系统中被劫持的程序程序名
14.找到系统中存在信息泄露的服务运行端口
15.提交Parloo公司项目经理的身份证号
16.提交存在危险功能的操作系统路径
17.提交进源机器中恶意程序的MD5
18.提交攻击者留下的恶意账户名称md5
19.提交内部群中留下的flag并提交
20.请提交攻击者使用维护页面获取到的敏感内容
21.提交获取敏感内容IP的第一次执行命令时间
22.提交攻击者使用的恶意ip和端口
23.提交重要数据的明文内容*
24.提交恶意维权软件的名称
25.提交恶意程序的外联地址
26.提交攻击者使用的恶意dnslog域名
27.提交寻找反序列化漏洞的端口
28.提交web服务泄露的密钥
29.提交攻击者开始攻击的时间
30.提交攻击者在server中留下的账户密码
31.提交攻击者维权方法的名称
32.提交攻击者留下的木马md5
33.提交攻击者留下的溯源信息
34.提交攻击者的githubID
35.提交攻击者在github下留下的的内容
36.提交恶意用户的数量
37.提交恶意用户的默认密码
38.提交业务数据中攻击者留下的信息
39.提交私人git仓库中留下的内容
40.提交存在在mysql服务器中的恶意程序的MD5
41.提交恶意程序中模拟c2通信的函数名称
42.提交恶意程序创建隐藏文件的名称
43.提交恶意程序中模拟权限提升的函数
44.提交被钓鱼上线的用户名
45.提交恶意程序的所在路径
46.分析恶意程序的反连地址
47.提交恶意c2的服务器登录的账号密码
附件
附件下载地址:
百度网盘 https://pan.baidu.com/s/1otqDnpKTOEsPZQiWSE8ECg?pwd=6666 提取码: 6666 夸克网盘 https://pan.quark.cn/s/46653bd06cca
123云盘 https://www.123865.com/s/qDVvjv-zVBod 提取码:6666
解压密码:应急响应环境解压密码网络拓扑环境 Skills@@@Skills@@@Skills
畸行的爱 Parloo&zgsfsys&onefox&solar**juyt
畸形的爱--拓扑&资产
畸形的爱--题目
1.提交攻击者使用的攻击ip地址1
webserver 中间件为nginx,日志分析
/var/log/nginx 目录下:
攻击者1上传了php文件(a.php)
2.提交攻击者使用的攻击ip地址2
PC01 win7 有一个 简历.exe , 沙箱分析判断此软件为恶意软件,查看本地网络外联
netstat -ano
3.题解攻击者暴力破解开始时间
要找时间最早的那个。暴力破解,时间集中。
webserver 查看本地网络,发现还有docker web
hacker最先爆破了phpmyadmin服务,查看其日志即可。
4.提交攻击者留下的flag1
PC02 win10 任务计划程序
5.提交攻击者留下的flag2
PC02 win10 任务管理器--最近使用的文件
6.提交攻击者留下的flag3
webserver web目录下有关于数据库的配置文件(密码)
sql server 登录数据库,查询数据。
base64解码即可
7.提交钓鱼文件的哈希32位大写
PC01 win7 简历.exe 上传到微步云沙箱分析
8.提交攻击者留下的webshell-1密码
webserver docker的web
9.提交攻击者开放端口
由2知,简历.exe 的外联端口 8084
webserver 定时任务 1144
webserver docker web 的脚本 : 1133
10.提交攻击者留下的webshell密码2
webserver 本地web
11.提交攻击者留下的隐藏账户的密码
PC02 win10
发现,隐藏用户, Disk 提用户凭证 ,猕猴桃爆破 ,再暴hash
具体操作,见此文章:取证分析--磁盘取证(DiskGenius||PE)_[第十章][10.1.2 磁盘取证方法]磁盘取证-CSDN博客
12.[溯源]攻击者的邮箱
简历.exe 为恶意钓鱼文件,通过云沙箱或本地逆向分析
会得到攻击者的用户名 n0k4u
通过github邮箱反查即可。
https://api.github.com/users/n0k4u/events/public
https://api.github.com/users/<name>/events/public
当时可以,现在复盘再访问没数据了。正常访问此网站后,过滤@或email,就能得到邮箱。
或者
直接在提交的url后面加上 .patch 就可以看到纯文本形式的commit提交记录。
得到邮箱:
n0k4u@outlook.com
13.提交溯源后得到的flag
qq添加好友即可。
palu{loveyouibiejv}
应急响应--拓扑&资产
应急响应--题目
1.提交堡垒机中留下的flag
前三个题都在web界面,自己找就好。 (实在找不到可以去进系统命令行过滤一下)
2.提交WAF中隐藏的flag
3.提交Mysql中留下的flag
同步后直接下载,得到flag
4.提交攻击者的攻击IP
网络攻击web应用的流量先经过waf
看雷池 waf 攻击事件 ,分析源ip
5.提交攻攻击者最早攻击时间
由4知,攻击ip,找到最早的攻击时间即可。
6.提交web服务泄露的关键文件名
web服务,被waf保护, 雷池waf--防护应用--找到80端口的详情--应用路由/静态资源
7.提交泄露的邮箱地址
key.txt (存储公私钥)里有
8.提交立足点服务器ip地址
通过攻击源ip,我们可判断,hacker最先攻陷了资产(sshserver)
9.提交攻击者使用的提权用户密码
sshserver 登录 ,分析用户密码
john爆破parloo的hash,得出密码也为 parloo
10.提交攻击者留下的的文件内容
ssh server 的 parloo用户目录下
11.提交权限维持方法服务的名称
systemctl list-units --type=service --state=running
发现2个可疑的文件,读一下看看
systemctl cat rootset-test.service
systemctl cat rootset.service
发现它总是重启此服务,基本可以确定。 rootset
12.提交攻击者攻击恶意服务器连接地址
ssh server 网络外联 (多执行几次就有)
13.找到系统中被劫持的程序程序名
看12, 外联是由于b4b40c44ws ,可以确定此程序即为恶意程序。
14.找到系统中存在信息泄露的服务运行端口
server01 登录web界面
访问,发现信息泄露
15.提交Parloo公司项目经理的身份证号
看14
16.提交存在危险功能的操作系统路径
waf即可看到gitea资产,访问--探索,发现源码
17.提交进源机器中恶意程序的MD5
PC03为进源机器,开机后发现 svhost文件有点问题,直接磁盘搜索此文件,发现
丢沙箱分析,即可判断为恶意程序。
18.提交攻击者留下的恶意账户名称md5
pc开机就知道了 hack
19.提交内部群中留下的flag并提交
pc开机--内网通--群聊--聊天记录就有
20.请提交攻击者使用维护页面获取到的敏感内容
21.提交获取敏感内容IP的第一次执行命令时间
server01 command.log
22.提交攻击者使用的恶意ip和端口
server01 command.log
10.12.12.13:9999
23.提交重要数据的明文内容*
pc3桌面上有一个 txt : c3a1c3c13e326020c3919093e1260525045e
web资产有gitea ,waf上也能看到,直接进终端修改gitea登录的密码
gitea admin user change-password --username admin --password 你的新密码
发现 加密txt的脚本,给ai解密即可。
初步爆破密钥:
def custom_decrypt(encrypted_hex, key):encrypted_bytes = bytes.fromhex(encrypted_hex)decrypted = []key_bytes = [ord(c) for c in key]for i, byte in enumerate(encrypted_bytes):# 逆向替代操作xored = ((byte & 0x0F) << 4) | ((byte & 0xF0) >> 4)# 逆向异或操作xor_key = key_bytes[i % len(key_bytes)]shifted = xored ^ xor_key# 逆向移位操作char = shifted - (i % 5 + 1)decrypted.append(chr(char))return "".join(decrypted)def find_key_with_known_plaintext(encrypted_hex, known_plaintext, max_key_length=5):encrypted_bytes = bytes.fromhex(encrypted_hex)possible_keys = []# 确定需要匹配的已知明文长度match_length = len(known_plaintext)# 尝试所有可能的密钥长度for key_length in range(1, max_key_length + 1):# 对于每个可能的位置开始匹配for start_pos in range(len(encrypted_bytes) - match_length + 1):# 尝试从该位置开始匹配已知明文partial_key = [0] * key_lengthvalid = Truefor i in range(match_length):byte_pos = start_pos + iif byte_pos >= len(encrypted_bytes):valid = Falsebreak# 逆向计算密钥字节target_char = known_plaintext[i]encrypted_byte = encrypted_bytes[byte_pos]# 逆向替代xored = ((encrypted_byte & 0x0F) << 4) | ((encrypted_byte & 0xF0) >> 4)# 计算移位前的值shifted = ord(target_char) + (byte_pos % 5 + 1)# 计算密钥字节key_byte = xored ^ shiftedkey_pos = byte_pos % key_length# 检查密钥一致性if partial_key[key_pos] == 0:partial_key[key_pos] = key_byteelif partial_key[key_pos] != key_byte:valid = Falsebreakif valid:# 构建完整密钥key = ''.join(chr(b) for b in partial_key)possible_keys.append((key, start_pos))return possible_keysencrypted_text = "c3a1c3c13e326020c3919093e1260525045e"
known_plaintext = "palu{"print("尝试根据已知明文部分查找密钥...")
possible_keys = find_key_with_known_plaintext(encrypted_text, known_plaintext, max_key_length=5)if possible_keys:print("\n找到可能的密钥:")for key, pos in possible_keys:print(f"密钥: '{key}' (匹配位置: {pos})")decrypted = custom_decrypt(encrypted_text, key)print(f"完整解密: '{decrypted}'")print("-" * 50)
else:print("没有找到匹配的密钥")
密钥 MySec ,猜测可能为 MySecretKey (长度太大爆破时间太长,也可借鉴其他佬的思路)
密钥爆破明文:
def custom_decrypt(ciphertext, key):decrypted = []key_bytes = [ord(c) for c in key]for i in range(0, len(ciphertext), 2):hex_byte = ciphertext[i:i+2]substituted = int(hex_byte, 16)xored = ((substituted & 0x0F) << 4) | ((substituted & 0xF0) >> 4)xor_key = key_bytes[(i // 2) % len(key_bytes)]shifted = xored ^ xor_keyoriginal_char_code = shifted - ((i // 2) % 5 + 1)decrypted.append(chr(original_char_code))return ''.join(decrypted)key = "MySecretKey"
ciphertext = "c3a1c3c13e326020c3919093e1260525045e"
plaintext = custom_decrypt(ciphertext, key)
print(plaintext)
24.提交恶意维权软件的名称
pc03 开机后,就会出现svhost软件有问题
看其路径,在开机自启动里
svhost
25.提交恶意程序的外联地址
palu03
解包--发编译pyc文件即可。
88.173.90.103
26.提交攻击者使用的恶意dnslog域名
server01 command.log
27.提交寻找反序列化漏洞的端口
在waf的攻击流量中直接找反序列化漏洞。
9999
28.提交web服务泄露的密钥
waf 查看web资产 , 发现存在heapdump泄露,访问,下载。
Release Auto Build - 20250409T071858 · whwlsfb/JDumpSpider
工具直接读取,
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump
29.提交攻击者开始攻击的时间
waf 9999端口的资产 访问日志
30.提交攻击者在server中留下的账户密码
server01 parloohack john直接爆破即可。
123456
31.提交攻击者维权方法的名称
server01 系统服务
systemctl list-units --type=service --all
parloohack_script.service
32.提交攻击者留下的木马md5
server01
33.提交攻击者留下的溯源信息
palu02 Google浏览器--密码管理
34.提交攻击者的githubID
33题, 841366067 为qq号
ParlooSEc
35.提交攻击者在github下留下的的内容
36.提交恶意用户的数量
palu01
cmd: net user
37.提交恶意用户的默认密码
palu01
a.vbs:
--也可提取出那些恶意用户的凭证,猕猴桃爆破,再爆hash。
38.提交业务数据中攻击者留下的信息
业务数据
39.提交私人git仓库中留下的内容
gitea
40.提交存在在mysql服务器中的恶意程序的MD5
mysql server
41.提交恶意程序中模拟c2通信的函数名称
.a ida本地逆向
42.提交恶意程序创建隐藏文件的名称
43.提交恶意程序中模拟权限提升的函数
44.提交被钓鱼上线的用户名
palu02 内网通
Parloo-子怡
45.提交恶意程序的所在路径
46.分析恶意程序的反连地址
回执.exe 上传到云沙箱
47.101.213.153
47.提交恶意c2的服务器登录的账号密码
palu02 google浏览器--密码管理
admin/admin@qwer