简历

题目内容:

本题灵感来源于真实*产样本,flag为c2 ip的md5值。例如ip为127.0.0.1,flag则为flag{f528764d624db129b32c21fbca0cb8d6}

题目就一个附件 张小可 英语教师简历.png.zip,解压能拿到一个可执行文件 张小可 英语教师简历.png.exe,010打开能看到很多UPX:

先进行UPX脱壳,脱完了放到微步云沙箱里看看,说是可疑文件,但也没找到什么信息,于是试着分离一下文件:

能看到脱完壳后的文件里是有一张PNG图片的,foremost提取出来:

再试着用zsteg查一下有没有隐写:

里面有个网址,输到url栏里发现是可以下载 default.a 文件的,同样放入010里,发现里面有好多yyttddd,显然是异常的,试着将整个文件异或yyttddd,可以拿到一个MZ可执行文件:

想着这应该就是木马了,把这个放到微步云沙箱里,检测为恶意程序了,同时在Win7 64bit下能发现有ICMP的网络行为,但是算出ip的md5并提交却是错误的,比赛的时候就一直卡在这里了

赛后也是看了一些此题的wp,发现这是pupy木马,其实微步也有标注木马类型,不过当时根本没注意到(

虽然这里是Patpoopy,但是搜搜关于这个木马的资料,就会发现也被称为pupy:

之后就是在网上找个脚本解一下木马里的内容即可,github上有对应的decoder(https://github.com/CaledoniaProject/pupyrat-config-decoder):

照着README环境安装好像有点问题,直接把main.py里的关键代码拿出来自己解一下就行了:

import pylzma
import marshal

def decode_pupyrat(filename):
	data = None
	with open(filename, 'rb') as f:
		data = f.read()

	index = data.find(b'\x5d\x00\x00\x80\x00\x00')
	if  not index:
		print("LZMA signature not found, skipped")
		return
	
	data = pylzma.decompress(data[index:])
	tmp  = marshal.loads(data)
	print (tmp)
	
decode_pupyrat("download.exe")

运行结果:

{'launcher_args': [b'--host', b'60.177.118.44:3432', b'-t', b'ssl'], 'cid': 1134523535, 'launcher': b'connect', 'delays': [(10, 5, 10), (50, 30, 50), (-1, 150, 300)], 'debug': False, 'credentials': {'SSL_BIND_CERT': ......
......
(\x00\x00\x00\x00(\x00\x00\x00\x00s\x17\x00\x00\x00network/lib/msgtypes.pyt\x08\x00\x00\x00<module>\x04\x00\x00\x00s&\x00\x00\x00\x00\x01\x06\x03\x10\x02\x10\x02\x10\x01\x10\x01\x16\x02\x1c\x03\x06\x01\x06\x03\x12\x04\t\x06\t\x05\x19\x01\x11\x02\x0c\x02%\x01\x14\x03\x0f\x02'}]

ip为 60.177.118.44 ,md5值为 b57758d5acc923137eef453239ba685b

flag{b57758d5acc923137eef453239ba685b}