- flash文件shellcode提取
- 最近利用flash漏洞的SWF相当的多 提取里面的shellcode进而分析出里面的下载链接 很成问题
- 特地下了SWF9文件格式来看了下。。。。
- The header begins with a three-byte signature of either 0x46, 0x57, 0x53 (“FWS”); or 0x43,
- 0x57, 0x53 (“CWS”). An FWS signature indicates an uncompressed SWF file; CWS
- indicates that the entire file after the first 8 bytes (that is, after the FileLength field) was
- compressed by using the ZLIB open standard
- 上面这段英文的意思就是 SWF文件头由3字节的标识("FWS"或者"CWS")开始。"FWS"标识 表示SWF文件未被压缩
- "CWS"则表示 整个文件除开始的八字节外(换句话说,从文件长度域开始)已由开源的ZLIB压缩了
- 对于"CWS" 这类的SWF文件 需要解压缩后才可以提取SHELLCODE。"FWS"则可以直接提取
- 以今天抓到的一个SWF文件f64.swf为例:
- hiew查看二进制标识
- 00000000: 43 57 53 FF-FF FF FF 00-78 9C CD 54-5B 50 53 57 CWS???? x£═T[PSW
- 00000010: 14 BD F7 26-70 43 00 79-07 99 D1 1A-27 C6 5A 0C ?╜≈&pC y??╤→'╞Z♀
- 既然是压缩过的SWF 接下来需要解压 解压工具是自己写的,可以BAIDU相关工具,
- 也可以下载ZLIB 库自己动手写
- 解压后:
- 46 57 53 FF-68 07 00 00-30 0A 00 A0-00 0C 03 03 FWS?h? 0? á ♀??
- 44 11 08 FF-FF 00 43 02-FF FF FF C1-3F 20 BF 01 D???? C????┴? ┐?
- 解压后以后IDA载入, 在寻找shellcode起始代码的时候陷入了困境 把SWF格式
- 翻了个遍还是不知道,最后公司里的前辈说查找60h就可以了。。。。。
- 60h是pushad的机器码 一般shellcode都是以pushad开始。。。。
- seg000:000000F2 ; ---------------------------------------------------------------------------
- seg000:000000F2 pusha
- seg000:000000F3 jmp short loc_1