S4x23ICSCTF写

7分钟读取 2月17日

义工

某些人喜欢一盒小拼图, 另一些人可能遇到一盒二进制并感觉像一盒小拼图

s4x23网络安全会议寄给我二进制文件 简单命名为sample.exe

//错误打包器

使用什么打包压缩恶意软件

//mawareLanguge和版本

语言版(主版、小版和修订版)编译恶意软件回答格式#####

//打包工具

使用什么工具打包恶意软件

/注册密钥

注册键检查恶意软件何用

//目标文件

哪个目录目标数据清除包括尾推反冲

//clientext

脚本中最后字符串是什么

启动FlareVM实例后下载恶意软件样本开始逆向工程工作二进制 先识别拆箱工具ServeIsteasy检验二进制DEI注册样本时用UPX打包

使用检测易工具识别用什么打包可执行文件

从上图可见,二进制装有UPX4.0.1UPX简单打包机 算我们幸运exe文件下载 UPX后从Powershell运行./upx.exe-d/path/to/sample.exe-o/path/to/unback.exe

UPX拆包样本.exe文件

在上述命令中,-d标志向UPX信号我想解压缩可执行程序,-o标志通知UPX命名无包输出为unbacked.exe命令成功,我们现在确认第一个题的答案为UPX4.0.1

拆包二进制后,我用工具IDA免费打开它,这是一个广受欢迎的拆包器开始逆序程序时我先用字符串启动,这样我就能识别二进制参比字符串中哪些函数常时,你走运并发现一些非加密/非混淆字符串,可以让你知道恶意样本中哪个子程序/函数最有趣检查无包样本时,我发现多字符串似乎与python相关,如pyModule或pyList表示恶意软件使用py2exe或pyInstaller等工具写成并转换为可执行性

IDA免费显示字符串表示python用于实现可执行性

ibjective解包py2exe工具从python可执行文件解包py2exe提取.pyc文件unpy2exe通知我样本使用PyInstaller生成

unpy2exe工具通知我pyaster用创建exe文件代替py2exe

下载工具PyInstaller生成可执行文件内容高山市https://github.com/extremecoders-re/pyinstxtractor)

Pyintractr成功拆包样本此时此刻,我们现在知道打包工具PyInstaller翻遍无包装文件探索者时,我发现一个文件叫Python38.dll似乎有趣是因为pyintractor表示二进制使用python3.

并发现dLL签名,细节部分产品版本为3.8.10表示恶意软件使用python3.8.10提取可执行文件有几分.pyc文件,即ython字节码原python字码可读化,但工作难度很大ython3.8.10和uncomle 6编译字码半可读python源码有几个文件 所以我决定制作小Powershell脚本 通过解编译过程自动化让我的生活更容易

$dir = "C:\AutomateDecompile\unpacked.exe_extracted"

Get-Chilth项目-Path$dir-Filter*.pyc+#ForEachObject

$filename=$_.FullName.replace

uncompele6$_.FullName>C:\AutemateDEcomple\pyOpt

}

脚本遍历路径中由 dir变量表示的每个.pyc文件并运行不复用6每一个文件都成功解编译,除biscaded.py解编译产生几大错误,自动解编译工具似乎无法用于may_obscation.pyc

并试图用不回答我问题的任何.run来动态分析可使用下链路查看报表:https://any.run/report/f307255d55c6aa9fa06b4edf9dc7c9ea606f6a02d522baca87f7105fa4c20d0f/8c90d9ef-c6a6-480c-8c5a-84bcf2c2a936

此时此刻,我置身事外 生活将变得乏味测试结果是否比本地编译者好 并比较成功com/tools-lang-en/pyc.html

开始人工梳理部分分解文件立即打开文件时,我遇到下列问题:

```

uncomble6版本3.5.0

# Python字节3.8

#编译自:ython2.7.5

#[GCC4.8.520150623

嵌入式文件名:biscated.py

导入glob,检验,数学,os,pyAescript,请求,sys,winreg,zipfile

def _O1l0l0lOII(_OIl0l0lOIIO0, _OIl0l0lOIIO01O):

Ol0lOLO0='

s Lists(_OI0l0lOIIO0):

Ol0lOIIO0

返回_Ol0lOIIO0

```

上方混淆代码似非任何东西,“cr(ords)++ssssss表示这是一个常用pythonxor函数mailbiscated.py文件视觉工作室代码并启动“查找并替换”名称,如#Ol0lOIIO0后我将上函数转换成可读代码片段

def xor_dec(data,xor_key):

解码表示 ''

s inList(data):

dcodedchr/ords#xor_key

返回解码

```

自用查找替换后,我注意到函数在整个编译执行程序中调用很多并开始复制程序函数调用 随附参数以ython并查找替换二进制渐变易读性字符串从_Ol0lOII(MTIFZ,57)+_Ol0lOII

解密后查找并替换所有xor_dec参数和任何一组参数并匹配解密文本后,我遇到一个函数似似相似前一函数,仅取四维参数而非二维参数除外重命名和玩耍后,我为python解密脚本添加了另一个函数

我命名函数Other_xor则函数似乎用于混淆数学.sqrt或数据1.data2等模块名称样本中“Other_xor”专用于调用python模块继续过程使用这两个函数并同时查找和替换既乏味又怪异地放松 仿佛一盘耗时的糖果压倒最终我把二进制转换成 人性可读python源码

ython源码下载并查看下方

https://github.com/rtrapp32/s4x23-challenge/tree/main

警告:不运行PY文件恶作剧

从腐烂python源码, 其余问题可解答CTF

问题出在这里

//错误打包器

使用什么打包压缩恶意软件

UPX4.0.1

//mawareLanguge和版本

语言版(主版、小版和修订版)编译恶意软件回答格式#####

ython3.8.10

//打包工具

使用什么工具打包恶意软件

***ANSWER:2

/注册密钥

注册键检查恶意软件何用

HKEY_CLASSES_ROOT\Wow6432Node\CLSID{D99CD578–9510–4014–9161-F01778698159}

//目标文件

哪个目录目标数据清除包括尾推反冲

C:\Program Files\Siemens\NX\UGII\

exe样本

//clientext

脚本中最后字符串是什么

"https://www.w0rldtimebuddy.com/clock-widget/time.php"

其中一些问题略含混性,因此可以有多项回答,如登记处密钥问题,可指源码内两种可能的注册密钥归根结底,这是一个有趣的挑战,我常发现自己无法停止工作时笑感谢s4x23会议团队 数日趣味挑战https://s4xevents.com/

义工

义工

Baidu