内网横向信息收集-ServerScan
2023-6-13 21:5:19 Author: 星冥安全(查看原文) 阅读量:20 收藏

一款使用Golang开发且适用于攻防演习内网横向信息收集高并发网络扫描、服务探测工具。

🍭Property

  • 多平台支持(Windows、Mac、Linux、Cobalt Strike)

  • 存活IP探测(支持TCP、ICMP两种模式)

  • 超快的端口扫描

  • 服务和应用版本检测功能,内置指纹探针采用:nmap-service-probes

  • Web服务(http、https)信息探测

  • 扫描结果兼容INFINITY攻防协同平台(暂不公开)

🎉First Game

总结诸多实战经验,考虑到实战过程中会出现和存在复杂的环境、红蓝对抗过程中常用的内存加载无文件落地执行等,因此ServerScan设计了轻巧版专业版、支持Cobalt Strike跨平台beacon:Cross C2的动态链接库以及支持INFINITY攻防协同平台的专用版。便于在不同的Shell环境中可以轻松自如地使用:如:Windows Cmd、Linux Console、远控Console、WebShell等,以及Cobalt Strike联动使用cna脚本文件加载,实现内网信息快速收集,为下一步横向移动铺路。

轻巧版:

参数形式简单、扫描速度快、耗时短、文件体积小、适合在网络情况较好的条件情况下使用。

专业版:

支持参数默认值、支持自定义扫描超时时长、支持扫描结果导出、适合在网络条件较苛刻的情况下使用。

动态链接库:

为支持Cobalt Strike跨平台beacon,无文件落地执行,无文件执行的进程信息,基于轻巧版本进行动态链接库编译,扫描超时时长为1.5秒。

💻for Linux or Windows

轻巧版

for PortScan

    Usage:

    Scanning:

    for Service and Version Detection

    Usage:

    Scanning:

    专业版

    for PortScan

    Usage:

    Scanning:

    for Service and Version Detection

    Usage:

    Scanning:

    🎮for Cobalt Strike

    Windows

    由于Cobalt Strike已经内置了PortScan,因此目前Windows仅支持利用cna上传对应版本的ServerScan可执行文件到服务器进行扫描。

    for Service and Version Detection

    Interact:

    Cobalt Strike跨平台beacon

    ServerScan的优势在于跨平台,在Hook师傅的帮(jiān)助(dū)下目前已经基本适配了Cross C2的Linux、Mac OS两大平台,为了提高隐匿性减少文件特征,目前支持内存加载可执行程序和动态链接库调用,您只需在安装了Cross C2的Cobalt Strike中导入对应的.cna脚本,即可实现ServerScan与Cobalt Strike跨平台beacon联动,具体使用参考Usage。

    for PortScan

    Interact:

    Targets结果集自动导入:

    services结果集自动导入:

    for Service and Version Detection

    Interact:

    Targets结果集自动导入:

    services结果集自动导入:

    🌈Runtime Environment

为了实现“一次开发,到处运行”的效果,ServerScan采用具有跨平台编译特性的Golang进行开发。

目前已成功编译了三大主流操作系统可执行程序动态链接库,并在如下操作系统通过了运行测试:

🐱‍👓Usage

轻巧版

HOST  Host to be scanned, supports four formats:    192.168.1.1    192.168.1.1-10    192.168.1.*    192.168.1.0/24PORT  Customize port list, separate with ',' example: 21,22,80-99,8000-8080 ...MODEL Scan Model: icmp or tcp

专业版

  -h string      Host to be scanned, supports four formats:      192.168.1.1      192.168.1.1-10      192.168.1.*      192.168.1.0/24.  -m string      Scan Model icmp or tcp. (default "icmp")  -o string      Output the scanning information to file.  -p string      Customize port list, separate with ',' example: 21,22,80-99,8000-8080 ... (default "80-99,7000-9000,9001-9999,4430,1433,1521,3306,5000,5432,6379,21,22,100-500,873,4440,6082,3389,5560,5900-5909,1080,1900,10809,50030,50050,50070")  -t int      Setting scaner connection timeouts,Maxtime 30 Second. (default 2)  -v  ServerScan Build Version

Cobalt Strike版本

├─ServerScanForLinux
│ │ CrossC2Kit.cna
│ │ serverscan.linux.elf.cna
│ │ serverscan.linux.so.cna
│ │
│ ├─ELF
│ │ portscan
│ │ portscan386
│ │ serverscan
│ │ serverscan386
│ │
│ └─SO
│ crossc2_portscan.so
│ crossc2_serverscan.so

└─ServerScanForWindows
│ serverScan.win.cna

└─PE
├─x64
│ serverscan_amd64.exe

└─x86
serverscan_386.exe

(Ps:serverScan.win.cna主要是通过将本地对应版本的Serverscan上传到服务器的c:\windows\temp\目录执行,此方法略显笨拙,后期会更新无文件落地的方法)

选择一个已经上线的beacon,在Interact中输入help查看Commands是否新增了Serverscan86、Serverscan64,若出现就可以像使用portscan一样使用serverscan了🙂

首先您应该确保已经在Cobalt Strike成功安装了Cross C2;

其次在Cobalt Strike的Script Manager中 Load serverscan.linux.elf.cna 和 serverscan.linux.so.cna两个脚本,其分别对应内存加载ELF、动态链接库so调用,两者的区别主要是隐匿性的问题😎

若直接调用so文件运行serverscan时,在主机上ps无法找到对应的进程,而直接内存加载serverscan的ELF则会在运行过程中出现一个随机名称的扫描进程🙃

(目前带有指纹识别的动态链接库编译的文件体积较大,还没有找到合适的办法压缩体积,各位师傅们有好的提议欢迎issue)🔥🔥🔥

    Cobalt Strike跨平台beacon

    Windows

    在Cobalt Strike的Script Manager中Load serverScan.win.cna

 

转载:https://github.com/Adminisme/ServerScan作者:Adminisme欢迎大家去关注作者

欢迎师傅加入安全交流群(qq群:611901335),或者后台回复加群

如果想和我一起讨论,欢迎加入我的知识星球!!!

扫描下图加入freebuf知识大陆

师傅们点赞、转发、在看就是最大的支持

后台回复知识星球或者知识大陆也可获取加入链接(两个加其一即可)


文章来源: http://mp.weixin.qq.com/s?__biz=MzkxMDMwNDE2OQ==&mid=2247490793&idx=1&sn=240d9afb0b6f93d4f53c3706946752c8&chksm=c12c2a2ff65ba339d3dba07f90551b6a984ea1e431a423d8e7099a600e177f9491464513fb9d#rd
如有侵权请联系:admin#unsafe.sh