
CornerShot是什么?
如果在战场上,CornerShot将是一种强有力的武器,可以帮助士兵穿过各种“障碍”,而无需担心暴露自己的行踪。对于网络安全来说,CornerShot可以帮助广大研究人员查看远程主机的网络访问,而不用获取到针对目标主机的任何特殊权限。
通过使用CornerShot,我们可以通过一个源(具备网络访问权)来判断特定端口p和目标之间是否存在网络访问关联。
比如说,假设一个红队正试图从一个“已入侵”的源主机A到一个目标主机X,而主机A对其没有访问权限。如果此时尝试通过主机B来访问,则会发现主机B和X之间没有网络访问。通过使用CornerShot,团队可以发现主机C实际上可以访问目标X,因此向目标X的网络传播应该首先通过主机C。

跟Nmap类似,CornerShot可以区分端口的以下状态:打开、关闭、过滤和未知(如果无法确定)。
工具演示样例
下面的工具演示样例演示了针对两台运营商主机172.0.1.12和172.0.1.13运行CornerShot,以确定网络是否可以访问192.168.200.1:

开始使用
CornerShot能够以软件包或单独模块的形式来使用。唯一的要求就是主机需要配置好Python 3环境和impacket包。
工具安装
pip install cornershot
单独使用
工具的基础使用方式需要从有效域用户获取凭证,以及FQDN域和目标IP等等:
python -m cornershot <user> <password> <domain> <carrier> <target>
如需扫描大量目标、子网或IP范围,则需要用逗号分隔列表:
python -m cornershot <user> <password> <domain> 192.168.1.10-192.168.1.20 192.168.5.0/24,192.168.6.0/24
默认情况下,CornerShot将尝试扫描下列端口:135, 445, 3389, 5985, 5986。用户可以提供端口列表或端口范围,需用逗号隔开:
python -m cornershot -tp 22,8080,45000-45005 <user> <password> <domain> <carrier> <target>
以软件包使用
在代码中,需要用到有效域用户的用户名、密码和域名实例化CornerShot对象。首先需要通过add_shots方法来添加目标及端口信息,然后调用open_fire方法,它将根据所需的端口执行相关的RPC调用。
from cornershot import CornerShot cs = CornerShot("username", "password", "fqdn") cs.add_shots(carriers=["192.168.1.1"],targets=["192.168.1.2","192.168.1.3"]) results = cs.open_fire()
open_fire方法的执行结果输出格式如下:
{'carrier_1': {'target_1': {135: 'unknown', 445: 'filtered', 3389: 'filtered', 5986: 'filtered', 5985: 'filtered'}, 'target_2': {135: 'unknown', 445: 'open', 5985: 'unknown', 5986: 'filtered', 3389: 'open'} }, 'carrier_2': {'target_1': {3389: 'filtered', 135: 'filtered', 5985: 'filtered', 445: 'filtered', 5986: 'unknown'}, 'target_2': {5985: 'filtered', 5986: 'filtered', 445: 'filtered', 135: 'filtered', 3389: 'open'} } }
工具使用场景
完整的网络可见性
识别网络中的某个主机B是否可以访问主机C,这一看似简单的任务可能需要大量部署网络传感器、设备代理或收集大量防火墙规则、路由器配置和主机策略。
CornerShot可以通过使用一个(或很少几个)代理,即可查询网络中其他主机并确定它们对远程主机的访问,从而简化此过程。
验证BloodHound路径
安全团队经常会利用BloodHound来查找并减少在目标网络中的提权路径,但通常会发现他们需要跟BloodHound所找到的数百万条逻辑路径进行“抗争”。
ShotHound是一款可以跟CornerShot配合使用的工具,可以更好地发现网络访问支持的实用路径。
操作系统支持

许可证协议
本项目的开发与发布遵循Apache v2.0开源许可证协议。
项目地址
CornerShot:【GitHub传送门】
参考资料
https://zeronetworks.com/blog/adversary-resilience-via-least-privilege-networking-part-1/
https://github.com/zeronetworks/BloodHound-Tools/tree/main/ShotHound

澳大利亚 1F
这个工具跟nmap配合用效果应该不错
日本 B1
@ 墨香妃子 一个找路径,一个扫细节,搭配干活不累。
天津市 2F
这工具对云环境支持不太行啊
福建省莆田市 3F
输出格式确实方便,直接写个脚本就能分析了
印度尼西亚 4F
新手求问普通域用户权限够用吗?
新加坡 5F
安装impacket确实容易卡住,建议先看官方文档
日本 6F
普通域用户真能跑起来?试了几次都报权限错。
印度尼西亚 7F
这工具对蓝队排查内网异常通路确实有用,刚拿去扫了测试环境。
辽宁省大连市 8F
为啥默认端口不加22和80?linux机器基本扫不到啊🤔
云南省 9F
前几天做内网渗透时就缺这种工具,发现隐蔽通路全靠运气。
广东省珠海市 10F
跟nmap比隐蔽性确实强,不容易触发告警。
中国 11F
有谁在实战中用过吗?效果咋样
山东省滨州市 B1
@ Whiskey Jack 实战中配合BloodHound用效果还不错,省了不少时间
广东省深圳市 12F
我之前做渗透测试时也遇到过类似需求,当时折腾了好久
湖南省常德市 B1
@ 墨无痕 深有同感,找跳板机的时候特别费劲,有工具能自动化就舒服多了。
陕西省西安市 13F
端口状态区分这块讲得挺清楚的👍
辽宁省大连市 14F
感觉配置起来有点麻烦,新手可能搞不定
韩国 B1
@ 墨剑行 多试试几个跳板机,说不定有意外发现。
河南省新乡市 15F
跟BloodHound配合用这个思路不错
江苏省泰州市 B1
@ 白蛇缘 是的,ShotHound就是干这个的,能过滤掉大量无效路径,提高效率。
日本 16F
为啥默认端口要选这几个?有人知道原因吗
日本 B1
@ 溪桥柳烟 默认端口那几个都是Windows的高危端口,135、445、3389这些,常用来做横向。
浙江省 17F
这个在云环境里能用吗?
上海市普陀区 18F
看起来比传统扫描方式更隐蔽
韩国 B1
@ 音乐旅人 确实,不直接接触目标,被发现的概率低很多。
湖南省娄底市 19F
安装依赖有点多,要是能打包成exe就好了
马来西亚 20F
这玩意儿对红队来说是个神器啊,隐蔽性确实强。
印度 21F
之前用nmap扫不到的路由,用这个居然能发现通路。
上海市徐汇区 22F
要装impacket啊,那得先配好环境,有点门槛。
陕西省榆林市 B1
@ 说书邹 装impacket还行吧,pip一把梭,就是版本容易冲突
吉林省四平市 23F
默认端口那几个都是windows常用的管理端口吧?135、445这些。
黑龙江省哈尔滨市 24F
输出结果格式还挺规整的,方便写脚本解析。
上海市 25F
试了下扫描速度怎么样?会不会很慢?
江苏省无锡市 26F
跟shothound结合这个点不错,能验证路径实用性。
浙江省宁波市慈溪市 27F
要是目标主机禁了那几个默认端口,是不是就扫不到了?
韩国 B1
@ 墨香铜臭 端口被禁的话可以自己指定其他端口扫描吧?
印度 28F
文档里给的例子IP都是内网段,外网扫描适用性如何?
广东省广州市 29F
对于蓝队防守方,这东西是不是也能用来排查异常通路?
日本 30F
这个工具对蓝队也很有帮助吧,排查内网横向时能省不少事。
韩国 31F
外网能用吗?感觉依赖域环境的话限制挺大的。
广东省潮州市 32F
需要域账号这点有点麻烦,测试环境还好,实战可能不好搞。
北京市 33F
跟nmap比优势在哪?就只是更隐蔽吗?
北京市 34F
实战用过一次,发现了几条之前没注意到的通路,挺惊喜的。
河北省石家庄市 35F
输出结果格式不错,直接就能导入其他工具做分析了。
广东省广州市 36F
看起来原理是通过RPC去探路?那是不是对Windows环境更有效?
韩国 37F
要配Python和impacket,对新手确实不太友好,容易卡在环境上。
上海市静安区 38F
配置环境这块对新手来说确实容易卡住,得花点时间折腾。
澳大利亚 39F
之前用过类似思路的工具,隐蔽性确实比nmap强一些,不容易触发告警。
韩国 40F
实战中用过一次,发现了几条之前没注意到的通路,挺惊喜的。
日本 41F
感觉配置起来有点麻烦,新手可能搞不定。
安徽省合肥市巢湖市 42F
这工具跟nmap配合用效果应该不错,红队又多了一种探路手段。
浙江省金华市 B1
@ 星渊探秘 这工具确实比nmap隐蔽,上次扫内网没触发WAF
上海市闵行区 43F
要是能支持更多协议就好了,现在看起来主要针对Windows环境。
澳大利亚 B1
@ 剑走偏锋 linux机器基本扫不动吧,默认端口全是Windows的命门
北京市 B1
@ 剑走偏锋 支持协议太少,加个SSH或HTTP探测就更香了
北京市 44F
有没有更简单的方案?感觉依赖域环境这点有点受限。
四川省自贡市 B1
@ 猫尾星 域环境限制是硬伤,非域主机就歇菜了?
重庆市 B1
@ 猫尾星 可以试试用代理或者VPN绕过限制?
上海市 45F
之前做内网渗透时就缺这种工具,发现隐蔽通路全靠运气。
日本 46F
输出结果格式挺规整的,方便写脚本解析。
黑龙江省哈尔滨市 47F
实战试过,配合BloodHound找通路效率翻倍,绝了
美国 B1
@ 绣阁听雨 实战中配合ShotHound用,通路验证快多了
韩国 48F
新手卡在impacket安装半小时,文档能不能给个requirements.txt
中国 49F
默认端口全是Windows的命门,linux环境基本白搭🤔
黑龙江省哈尔滨市 B1
@ 武丑笑星 试了下在Windows环境确实好用,linux基本没反应
中国 50F
前几天刚搞完内网测绘,要是早知道这工具能省两天
重庆市 51F
输出格式直接喂给Python脚本解析,舒服
广东省广州市 B1
@ 星辉引路人 确实,json格式直接import就行
日本 52F
为啥不支持ICMP探测?光靠RPC有点单薄啊
江苏省常州市 53F
云上VPC里试了下,跨账号网络根本扫不动,还是得本地部署
江苏省无锡市 B1
@ 冷笑话终结者 云环境确实限制多,本地部署稳定些
江苏省 54F
这个工具对云环境支持不太行啊,跨网段基本用不了
北京市 55F
默认端口都是Windows的,linux环境基本废了
辽宁省锦州市 56F
依赖域账号太麻烦了,测试还行实战咋用🤔
日本 57F
之前内网渗透就缺这种工具,发现通路全靠运气
河北省保定市 58F
跟nmap比隐蔽性确实强,不容易触发告警
山东省临沂市 59F
试了下扫描速度还行,但配置确实有点门槛
日本 60F
输出格式挺规整,写脚本处理很方便
日本 61F
蓝队也能用这个排查异常访问路径吧
北京市 62F
安装impacket卡了半天,新手建议直接看官方文档
陕西省渭南市 63F
要是能支持更多协议就好了,现在主要针对Windows
江苏省无锡市 64F
配置环境卡了俩小时,impacket依赖真坑
重庆市 65F
新手求问域账号必须是管理员吗?普通用户能跑不?
山东省青岛市 66F
之前内网渗透靠猜通路,这工具直接省一半时间
北京市 67F
云上跨VPC根本没法用,本地网络还行
越南 68F
输出结果直接丢进Python处理,格式太友好了
斯里兰卡 69F
这玩意隐蔽性确实强,比nmap安静多了
韩国 70F
普通域用户权限够用吗?还是得高权限账号?
韩国 71F
为啥不支持ICMP探测呢?感觉功能有点单一
马来西亚 72F
前几天做内网测绘用过,确实比nmap安静多了
日本 73F
和Nmap结合用应该效果不错
韩国 74F
适合用来做内网渗透测试吧?
上海市 B1
@ 绝望之镰 就是内网神器
韩国 75F
这个比喻还挺形象的
广东省东莞市 B1
@ 肥宅快乐兽 一看就是老军事爱好者了
日本 76F
端口状态分得挺细,能过滤未知状态挺实用
宁夏银川市 B1
@ 小风车糖 状态分得细才好用,过滤未知能省不少时间
重庆市 77F
这个项目还在更新吗?