CobaltStrike UPX脱壳加壳
UPX加壳:
使用x64dbg脱壳之开源壳upx - 知乎 (zhihu.com)
压缩后FILE size明显变小



查壳,发现已经加上了壳、
过了一些查杀,

自动脱壳方法(一般不灵)
upx -d /path/to/file
手动脱壳
用ada打开,发现加壳后发生了很大变化

找到OPE(原始程序入口地址)
设置硬件断点 (不会修改原有代码)hardwware
c++程序的OEP特征
00408027 >/$ 55 push ebp
00408028 |. 8BEC mov ebp,esp
0040802A |. 6A FF push -0x1
0040802C |. 68 F0F14000 push C++.0040F1F0
00408031 |. 68 84AF4000 push C++.0040AF84 ; SE 处理程序安装
00408036 |. 64:A1 00000000 mov eax,dword ptr fs:[0]
0040803C |. 50 push eax
0040803D |. 64:8925 000000>mov dword ptr fs:[0],esp
00408044 |. 83EC 58 sub esp,0x58
00408047 |. 53 push ebx
00408048 |. 56 push esi
00408049 |. 57 push edi ; ntdll.7C930228
0040804A |. 8965 E8 mov [local.6],esp
0040804D |. FF15 E4F04000 call dword ptr ds:[<&KERNEL32.GetVersion>; kernel32.GetVersion
00408053 |. 33D2 xor edx,edx ; ntdll.KiFastSystemCallRet
00408055 |. 8AD4 mov dl,ah
00408057 |. 8915 D06B4100 mov dword ptr ds:[0x416BD0],edx ; ntdll.KiFastSystemCallRet
0040805D |. 8BC8 mov ecx,eax
0040805F |. 81E1 FF000000 and ecx,0xFF
00408065 |. 890D CC6B4100 mov dword ptr ds:[0x416BCC],ecx
0040806B |. C1E1 08 shl ecx,0x8
有点奇怪,dump出来是kernel的dll

单步跟踪法
平衡堆栈法
一般可以通过判断ESP,在pop ESP后一般会出现程序的入口点。
| ESP | 堆栈指针(Stack Point)寄存器 | 只做堆栈的栈顶指针; 不能用于算术运算与数据传 |
|---|
汇编指令复习
| 指令 | 名称 | 示例 | 备注 |
|---|---|---|---|
| MOV | 传送指令 | MOV dest, src | 将数据从src移动到dest |
| PUSH | 进栈指令 | PUSH src | 把源操作数src压入堆栈 |
| POP | 出栈指令 | POP desc | 从栈顶弹出字数据到dest |
| 指令 | 名称 | 示例 | 备注 |
| — | — | — | — |
| JNE | 条件转移指令 | zf =0 时跳转到标号为label的位置 | |
| JMP | 无条件转移指令 | JMP lable | 无条件地转移到标号为label的位置 |
| CALL | 过程调用指令 | CALL labal | 直接调用label |
| JE | 条件转移指令 | JE lable | zf =1 时跳转到标号为label的位置 |
内存镜像法
alt+m 看内存信息 UPX2处F2下断点,F9运行

出现下图所示,根据OPE特征判断jmp artifact。。。处为程序入口点

使用Scylla插件脱壳

成功
秒到ope
直接CTRL+F,输入popad //在这里不行
]]
__文章作者:helson
__文章链接:https://helsome.gihub.io/2024/04/28/CobaltStrike-UPX%E8%84%B1%E5%A3%B3%E5%8A%A0%E5%A3%B3/
__版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 infinite!
__相关推荐
__2024-04-28 dll injection(dll注入)
__2024-07-08 wannacry勒索病毒加密解密过程分析
__2024-10-25 brute ratel C4 badger全分析文档
![]()
helson
吾生有涯,其知无涯
__公告
This is my Blog
__目录
- UPX加壳:
- 手动脱壳
- 2.1. c++程序的OEP特征
- 2.2. 单步跟踪法
- 2.3. 平衡堆栈法
- 2.4. 汇编指令复习
- 2.5. 内存镜像法
- 2.6. 秒到ope
__最新文章
brute ratel C4 badger全分析文档2024-10-25
PE解析器编写2024-10-25
利用dll通知回调加载shellcode2024-10-25
os cs1622024-09-23
wannacry勒索病毒加密解密过程分析2024-07-08
©2020 - 2024 By helson