freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Sickle:一款强大的Shellcode开发工具
2018-02-23 17:12:23

1.png

工具简介

Sickle是一款功能强大的Shellcode开发工具,它可以帮助开发人员以最快的速度开发出功能丰富的Shellcode。Sickle可以帮助开发人员:

1.   识别导致错误字符的指令;

2.   按各种语言格式进行输出格式化(例如Python、Perl和JavaScript等等);

3.   通过STDIN接收Shellcode并进行格式化;

4.   在Windows和Linux环境下执行Shellcode;

5.   将逆向Shellcode跟原始代码进行对比;

6.   将Shellcode转换成汇编语言代码(ARM和x86等等);

工具下载

Sickle:【GitHub传送门

故障快速检测

我发现自己需要不断重复做的工作就是编译汇编源码,然后提取出shellcode并将其放到封装器之中,最后再对代码进行测试。如果运行失败,整个过程将会不断重复进行直到成功为止。而Sickle可以帮助我们将Shellcode放到封装器中,并进行快速测试。注:此功能支持Windows和Unix系统。

2.png

重新创建Shellcode

有的时候你可能会发现一段Shellcode执行起来非常流畅,而你此时想要重新开发一次并了解其底层运行机制。那么Sickle就可以帮助我们比较原始Shellcode和你所创建的Shellcode版本之间的区别。

3.png

错误字符识别

需要注意的是,目前来说错误字符识别在基于Linux的操作系统平台中实现得最好,如果将Shellcode导出到Windows主机中,那么错误字符将不会高亮显示。下面给出的是Unix环境下的使用样例:

视频地址:https://asciinema.org/a/7vvVRjZGbY7OlqMsh6dBi7FDU

反汇编

Sickle还可以接收二进制代码文件并将提取出的操作码(shellcode)转换成机器指令(-obj)。请记住,这个功能只适用于原始操作码(-r)和STDIN(-s)。在下面给出的样例中,我转换了一个反向shell:

4.png

Windows安装

如果你不打算使用反汇编功能,并且只准备把Sickle当作封装器或导出工具来使用的话,Sickle可以搭配任何Python版本来使用。在测试过程中,我只在Windows 10主机上编写/测试64位Shellcode时遇到了问题。为了避免类似问题出现,我建议大家安装Python 3.4.4(amd64),不过在其他版本的Windows平台上还没有出现问题。如果你想编写x86 Shellcode的话,Windows 10也是可以的。在下面给出的样例中,我在Windows 10主机中测试了msfvenom生成的Shellcode ("windows/x64/shell_reverse_tcp"):

5.png

Linux安装

Sickle采用Python3编写,为了发挥其最大功能,我建议大家直接安装capstone【传送门】。Capstone的安装代码如下:

apt-get install python3-pip
pip3 install capstone

为了方便使用,我把Sickle添加到了/usr/bin/目录中用,操作样例如下所示:

root@kali:~#git clone https://github.com/wetw0rk/Sickle.git
root@kali:~#cd Sickle/
root@kali:~#chmod +x sickle.py
root@kali:~#cp sickle.py /usr/bin/sickle
root@kali:~#sickle 
usage:sickle [-h] [-r READ] [-s] [-obj OBJDUMP] [-f FORMAT] [-b BADCHAR] [-c]
              [-v VARNAME] [-l] [-e EXAMINE][-d] [-rs] [-a ARCH] [-m MODE]
 
Sickle- Shellcode development tool
 
optionalarguments:
  -h, --help            show this help message and exit
  -r READ, --read READ  read byte array from the binary file
  -s, --stdin           read ops from stdin (EX: echo -ne"\xde\xad\xbe\xef" |
                        sickle -s -f<format> -b '\x00')
  -obj OBJDUMP, --objdump OBJDUMP
                        binary to use forshellcode extraction (via objdump
                        method)
  -f FORMAT, --format FORMAT
                        output format (use--list for a list)
  -b BADCHAR, --badchar BADCHAR
                        bad characters to avoidin shellcode
  -c, --comment         comments the shellcode output
  -v VARNAME, --varname VARNAME
                        alternative variablename
  -l, --list            list all available formats andarguments
  -e EXAMINE, --examine EXAMINE
                        examine a separate filecontaining original shellcode.
                        mainly used to see ifshellcode was recreated
                        successfully
  -d, --disassemble     disassemble the binary file
  -rs, --run-shellcode  run the shellcode (use at your own risk)
  -a ARCH, --arch ARCH  select architecture for disassembly
  -m MODE, --mode MODE  select mode for disassembly

* 参考来源:Sickle,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

# shellcode # Sickle
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者