长亭百川云 - 文章详情

Python远程管理工具——Stitch

王小明的事

43

2024-07-13

 

一款很有意思的工具,记录一下windows上安装体验的过程。

环境:win7虚拟机

Github上作者介绍工具支持win、lnx、osx三种系统,经过测试发现对应系统文件格式的payload文件只能在对应系统上面生成,所以Windows系统上只能生成exe格式的payload。

• 安装

先到官网下好python2.7,安装好之后解压stitch的文件开始使用pip安装所需的module。根据文件的名称和git上的提示,先“pip install -r win_requirements.txt”试一下。结果会发现这样会有很多报错堆叠在一起。

先是会提示缺少“msvcp90.dll”,可以直接去百度下载一个扔到“c:\windows\system32”目录下面。

根据报错提示逐个解决,首先提示“PIL”这个module有问题,经过一番搜索,发现虽然“pip search PIL”是有一个”PIL” 存在的,但是似乎并不是我们要的”PIL” 。

最终解答是使用”pillow”代替。所以单独”pip install pillow”就可以了。去txt里面删掉”PIL”内容,继续往下走。

“logging”又出问题了,直接说解决办法,就是直接”pip install logging”,继续走。

此处”py2exe”有个小坑,如果直接去下载最新版的py2exe安装,到最后面一步会提示”No module named machinery”,我翻遍了百度也没找到与这个module相关的有用信息。

绝望了一阵,在google上找到了解决办法,那就是安装 0.6.9版本的”py2exe”(下载链接附在下面了),继续往下。

“pyHook”出问题,百度下载安装(下载链接附在下面),继续走。

“pywin32”单独下载安装(链接于文末),去txt删除相关内容,继续。

需要vc++ 9.0,按照链接地址下载安装就可以,go on。

Nice,经历一堆报错,至此,所有必须的module都已经安装完成,启动感受一下。

• 使用

默认监控4040端口,防火墙要给”python.exe”放行。输入”help”可以获得帮助信息,输入**”help 特定命令”**可以获得该命令的详细介绍。例如一开始让我误以为是linux当中在文件读取末尾做标识的“EOF”,其实只是exit用的…

在stitch当中主机和目标之间的通信使用的是AES加密,在生成payload的同时会生成一个AES密钥,添加到所有payload当中。因此想要访问其他stitch生成的payload,则AES密钥必须相匹配才行。

想要对payload进行跨主机或者跨系统操作时,必须使用“showkey”和“addkey”命令为新系统上的stitch添加上其他主机的密钥。不过我没做跨系统连接的尝试,从命令来看理论上应该是没毛病的。

像“ipconfig”和“ifconfig”这种命令都是通用的,下面只对一些不怎么常见的命令做个简单个人理解的解释。

EOF:同exit Addkey:添加一个新key Connect:当生成的payload为bind类型的时候,使用”connect [target] [port]“来连接

payload History:列出上线过的机器历史记录

History_remove:使用”history_remove [target]“来移除指定的历史记录

Home:返回到stitch的初始界面 Listen:使用“listen [port]”命令添加监听端口

Lsmod:在Windows系统上是罗列出所有的驱动程序

Sessions:同msf当中一样,列出当前在线主机,不过测试的时候发现主机下线后有时候会不同步 Shell:使用“shell [session]”命令获得指定session的

shell Showkey:列出当前的key

Start:和cmd当中的start一样,“start calc”就会打开程序员专用计算器

Stitchgen:创建一个基于宿主OS的史迪崽payload

下面就创建个payload测试下。
输入Stitchgen开始生成payload,首先会询问是否使用当前配置。

选择“Y”的话就直接开始生成payload了,选“N”会重新配置一遍,因为默认监听的4040端口,也为了演示的全面一点,所以我选“N”。

接下来会选择payload的连接方式是“bind”还是“reverse”以及填写连接方式对应的通信地址,我在测试的过程中发现同时给一个payload直连和反弹的通信方式最终确实是会上线的。

但是如果向一个正在以反弹方式进行通信的会话进行connect的话,会发生错误,没有深究是通信冲突还是因为我本机测试的原因。如果非要两种通信方式同时保留的话,我会选择bind和reverse各自单独创建一个payload。

后面的两个选项是让你选择是否需要email你和是否需要键盘记录功能,邮件功能使用的是gmail,自动略过(熟悉python的可以尝试修改一下,不过我觉得意义不是很大)。

再敲回车会跳回到生成payload的初始界面,此时选择“Y”的时机已到!

提示正在生成exe格式的payload,不过在Linux上测试的时候我发现提示是一样的,也会提示生成exe。

    不出意外的话进度条会顺利到达%100,但是测试过程中我出现过一种比较意外的情况,进度条走到%60左右会突然冒出多行进度细节,然后最后报个“拒绝访问”一类的错误才%100。最终也没有找到原因,因为这个情况时有时无。不过不必担心,因为即使爆出细节我最终测试也是正常上线的。

询问我们是否需要用NSIS做个安装包,此处选择“N”的话直接就只生成上绿色版单文件非安装版的payload,选择“Y”的话就会调用NSIS创建安装版(安装版会写启动项服务,重启后仍然上线)。

这里有个小坑,我是使用32位win7虚拟机测试的,C盘下只有“Program Files”目录,没有“Program Files (x86)”目录,而安装NSIS时会默认安装在“Program Files”目录当中,但是stitch当中只认x86目录下的NSIS。

所以小伙伴们,动动你的奶子想一想,我们去C盘新建一个“Program Files (x86)”目录再把NSIS自定义安装到该文件夹当中就可以解决这个ZZ问题了。

当然有的时候他也它也会任性的报个错

没关系,多试几次就好了,不知道是不是我强行创建x86目录安装NSIS的原因。

Configx目录当中payloadconfig.log之外的8个exe文件就是创建好的绿色单文件版payload,而“NSIS Installers”目录当中8个exe就是对应的安装版payload。

这里有个比较奇怪的地方,同样也是没找到原因。就是绿色单文件版payload当中的chrome.exe,它的图标会时有时无,但是并不影响正常上线和上线后的功能。

• 操作

生成payload的之后就是对目标机器上线之后的功能测试了,可以说作者在github下面介绍的几个亮点功能都可以实现。

有新的机器连接时stitch这里会提示。

获得会话shell之后,输入“help”获得帮助信息

同样只对一些不怎么常见的命令做个个人理解版的解释。

Askpassword:在目标机器弹出一个很逼真的对话框,要求输入当前用户账号密码,不输入的话会不停的弹。不过有点遗憾的是即使输入错误,这个对话框仍然会关掉

Avscan、avkill:扫描和干掉杀毒软件

Chromedump:把保存于chrome浏览器当中的所有密码都dump出来

Clearev:清除目标机器系统、安全、应用事件日志

Disablexxx:分别是禁掉RDP、UAC和Windows defender功能

Displayon、off:打开和关掉屏幕

Drives:列出所有的硬盘以及简要情况

Editxxx:编辑文件的访问、创建和修改时间

Environment:列出详细的环境变量

Firewall:对防火墙状态或者规则做出修改

Freeze:冻结对方的屏幕,经过测试三键仍然可以调出任务管理器,但是也会立即冻结,很有趣

Hashdump:dump出保存在系统当中的哈希

Hide:隐藏文件或者文件夹 Hostsfile:对目标机器hosts文件进行操作

Location:根据目标机器ip进行定位,功能测试似乎无效 Lockscreen:锁屏,等同于win+L

Popup:弹个框

Pyexec:python版本的psexec,在对方系统运行python脚本,但是只能是python脚本

Scanreg:列出注册表状况

Screenshot:截取当前屏幕 Vmscan:判断当前环境是否为虚拟机

Webcamxxx:列出并使用摄像头拍照

Wifikeys:查看连接过的无线的密码

骗人的框框

可以通过网络连接状况看到各个模块间的通信情况。Install版本的上线时间会稍长,因为它运行后需要一定的时间把启动服务写入目标机器,最终也会只留下一个通信程序,和下面相同的效果。

通过沙箱我们可以看到stitch是通过cmd、powershell以及一个自带的elevate.exe对启动服务发生了强行py。

最终也是只剩下一个写在“c:\windows\syswow64\google\”目录中的“chrome.exe”在猥琐运行。

个人认为这是一款很优秀的程序,linux版本的实验顺风顺水,甚至在u2b看到国外的黑阔们“pip install -r”之后直接忽略掉关于PIL的报错,总之要比win简单得多。至于osx穷人我就没法测试了,应该和linux区别不会太大。

文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。



**msvcp90.dll控件下载地址**:  
http://99idc.jb51.net:81/dll/msvcp90.rar**  
  
PIL参考**:  
http://blog.csdn.net/heatdeath/article/details/69664216**  
  
Machinery参考**:  
https://blog.qiyuange.net/?p=123**  
  
py2exe 0.6.9 下载地址**:  
http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/  
  
**pyHook下载地址**:  
https://sourceforge.net/projects/pyhook/**  
  
Pywin32下载地址**:  
http://99idc.jb51.net:81/201601/tools/pywin32\_2.7(jb51.net).rar  
  
**NSIS下载地址**:  
http://nsis.sourceforge.net/Download**  
  
参考文章**:  
http://www.freebuf.com/sectool/129104.html



*封面图片自Google图片采集,版权归misucell.com所有。其他图片均为原创。

*未经授权请勿转载。

*文章写于2017年12月,现在的bypass效果请自测。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2