原文链接:内外网资产对应关系定位 [ 一 ]
声明: 文章初衷仅为攻防研究学习交流之用,严禁利用相关技术去从事一切未经合法授权的入侵攻击破坏活动,因此所产生的一切不良后果与本文作者及该公众号无关
0x01 实战场景说明 实战中可能会经常遇到这样的情况,比如,前期在外网打点过程中肯定会搜集到非常多的目标敏感资产,包括跑在各种子域上的各类敏感Web业务系统,典型的,如, VPN, MAIL, OA, 运维管理平台, 财务系统, HR系统, SSO, 客户订单系统 , Citrix, 监控系统, 堡垒机 [ 这种一般也不大可能会直接把它暴露在外网,但不代表没有 ],EDR Web主控端, 各类防火墙/路由/视频监控设备的web管理端, 各种其它内部系统 等等等...ok,问题来了,当我们费尽千辛万苦顶到内网之后,该怎么去快速精准定位刚刚在外网看到的这些敏感资产所对应的内网位置呢
在此之前有必要简要说明下为什么要去做这种定位,一方面,一般授权的渗透都是有明确目的的,比如,需要拿到目标内网的某某核心业务系统权限,某某集中控制系统权限,某某机密数据 等等等...要拿到这些东西的前提是,得先搞清楚这些资产都放在了什么地方,换句话说,万一后面从其它地方搞到了密码,总得有个入口试
另外,知道了这些资产的大概位置,对下一步具体该怎么更高效的搞也是有参考意义的,总的来讲,知道这些以后会让整个后渗透过程变得的更有针对性,也不至于搞着搞着就迷失放飞自我了 [尤其当内网规模特别大的时候],另一方面,则是考虑到后期把整个内网搞定之后,为了能挑个更合适的位置给自己布口子 [ 此处的口子,可以是个账号密码,也可以是个webshell,或者系统后门,甚至人为故意构造的漏洞,并不局限 ],此处会介绍三种比较常用的内外网资产对应关系定位方式,其实非常简单,如下
0x02 实操 第一种,把前期在外网搜集到的目标子域列表整理好,拿到内网循环ping,然后把解析到的ip截下来
如下便可清晰的得到各个资产所对应的具体内网ip,从中也可顺便发现一些通过其它手段可能并不太好发现的内网段,在后续渗透中如果遇到这些ip 着重下关注即可 - # for /f "delims=" %i in (host.txt) do @ping -w 1 -n 1 %i | findstr /c:"[10." /c:"[192." /c:"[172." >> C:/users/public/out.txt
复制代码
第二种,dns 暴力枚举 通过第一种方式,确实可以定位到一些资产,但那个子域列表毕竟是从外网抓来的,漏一些在所难免,所以还需要在内网再进行一次dns枚举,内网抓到的结果肯定要比外网多的多[实际速度也快很多],但前提是得先有个内网的dns ip, 怎么在目标找内网dns? 方式无非两种,第一种,假设当前已控机在域内,系统网络配置里就有主备dns的ip,后续直接指明用这个ip来枚举即可
- beacon> shell ipconfig /all
复制代码
另一种,假设当前已控机不在域内,则可以直接扫下内网的53 [tcp & udp 53同时开的一般都是] 端口看,或者看下当前机器的dns缓存,通常也是可以找到的 - beacon> portscan 192.168.137.0/24 53 none 256
- beacon> shell ipconfig /displaydns
复制代码
有了DNS ip,接着就可以拿着这些ip进行暴力枚举 [关于dns枚举的原理非常简单,不再废话,不清楚的弟兄请稍后自行谷歌,实际能找到多少看字典[,枚举完成后会自动存到 csv, 如下的工具是基于go的 [ 个人对 基础工具 的原则, 如果不是纯奔着练,学别人的代码或者某些商业化目的去的 等等等...建议能用开源的就直接用开源的,后面基于之上二次开发即可,没有太大必要所有事情都一定要自己完完全全的从0到1,尤其是对于一些已经有很多同类工具的,把别人积累的优秀经验拿过来改进下直接用即可,所有工具都用自研的,也容易暴露团队代码习惯 ]
- https://github.com/Q2h1Cg/dnsbrute (注: 工具有用到Crypt360会杀)
复制代码 down下来自行编译,关于go多说一点,编译后体积过大,实战中不好上传,没法避免,虽然可以通过调参,upx压缩来减小体积,但upx [亦可用其他压缩壳代替] 这种360会杀,不过,我们可以自己用其他语言实现然后合到cs中,难度不大
- beacon> shell dnsbrute.exe -domain sangfor.com.cn -dict SubDomain.txt -rate 1000 -retry 1 -server 192.168.137.11:53
- beacon> shell tasklist | findstr "dnsbrute.exe"
复制代码
第三种,内网批量抓取 Web Title & Header 通过把上面两种方式获取到的结果汇总去重,其实已经能定位到一部分资产了,但这显然还是不够清晰,有了上面那些现在也只能告诉我们大概哪个资产域名对应的是哪个内网ip,其实也并不知道这个ip现在到底还存不存活,上面具体跑的什么服务,什么业务 等等等... 所以,现在还需要再针对这些ip的Web Title & header集中进行一次批量获取,当然,这只是针对Web的,至于其它的各类服务端口banner,后续会单独说明,有了title和响应banner,才好确定下一步哪些是可以优先搞的,另外,你也可以拿着在内网抓到的某些title去外网的各种引擎 [比如,fofa,shodan,google,bing...]上搜,以此来大致判断其所对应的外网位置,方便后期找个更合适的点留口子 关于内网批量抓title,此处已经写好了针对Windows 和 linux扫描脚本,非常简单,只是简单配合curl 实现的一个粗糙的端口扫描功能[一次端口三四个,速度还是可以的,起码并不是非常吵 ],不要问我为什么用批处理和shell,简单,快 [ 两分钟撸完,很多时候去看各种py工具代码,都是会有这样的情况,外面套个gui,咋一看挺唬人的,然后三四百行代码里关键的就六七句句,还TM调的系统内置或者是一些三方工具/库 ,杀鸡牛刀 ,脱裤子放屁... ],系统内置方便,非常适合专门用来快速写些简单的demo,尤其在你们没有那么多少时间去折腾的时候,实战的前提是你的cmd.exe没有被各种杀软/EDR强奸
Win 效果 [ 代码忘带了,明天传git上再补链接吧 ]
Linux 效果
说到内网扫描,再多提一句,个人非常不建议, 同时针对一个ip扫多个端口,如果你不想被封的那么快,更建议同时针对特定的ip列表只扫一个端口 ,现实会告诉你,这种方式绝对要比前面那种好,虽然站在检测的角度,两者其实并没有太大的区别,篇幅限制,暂时不说那些,还是那句话,一篇文章,只解决一个实际问题,不想参杂太多其它的内容,如下是实际扫描效果,至此关于内网资产定位,我想应该是已经说清了, 最后,希望能对弟兄们有所收获和启发,祝好运,音乐还不错,累了一天,跟弟兄们一起放松下,晚安
|