内网安全:Windows信息收集
收集本机信息
查询网络配置信息
获取本机网络配置信息
ipconfig /all
查询操作系统及软件信息
查询操作系统版本信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
如果是中文版操作界面
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%
查看安装的软件及版本
用wmic命令
wmic product get name,version
wmic product list brief
用powershell命令
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"
查询本机服务信息
查询本机服务信息
wmic service list brief
查询进程列表
查看当前进程列表和进程用户,分析软件、邮件客户、vpn和杀毒软件进程
tasklist
查看进程信息
wmic process list brief
常见杀软对应的进程名
360tray.exe | 360安全卫士 |
360sd.exe | 360杀毒 |
ZhuDongFangYu.exe |
360主动防御 |
KSafeTray.exe |
金山卫士 |
SafeDogUpdateCenter.exe SafeDogTray.exe SafeDogGuardCenter.exe |
安全狗 |
mssecess.exe | 微软杀毒 |
rfwmain.exe | 瑞星防火墙 |
D_Safe_Manage.exe d_manage.exe |
D盾 |
hipstray.exe wsctrl.exe usysdiag.exe |
火绒 |
QQPCRTP.exe | QQ电脑管家 |
查询启动程序信息
wmic startup get command,caption
查询计划任务
schtasks /query /fo LIST /v
查询主机开机时间
net statistics workstation
查询用户列表
net user
通过分析用户列表,可以找出内网机器的命名规则。
获取本地管理员信息
net localgroup administrators
查看当前在线用户
query user || qwinsta
列出或断开本地计算机与所连接的客户端之间的对话
net session
查询端口列表
查看端口列表 开放端口所对应的服务和应用程序
netstat -ano
此时可以看到当前机器和那些主机建立连接,以及TCP、UDP、等端口的使用监听情况
查看补丁列表
查询系统详细信息,注意版本、位数、域、补丁信息、更新频率
systeminfo
使用wmic查看安装在系统中的补丁:名称,描述,ID,安装时间
wmic qfe get Caption,Description,HotFixID,InstalledOn
查询本机共享列表
查看本机共享列表和可访问的域共享列表
net share
利用wmic命令查找共享列表
wmic share get name,path,status
查询路由表及所有可用接口ARP缓存表
查询路由表及所有可用接口的ARP(地址解析协议)缓存表
route print
arp -a
查询防火墙相关配置
关闭防火墙
netsh firewall set opmode disable //Windows Server 2003及之前版本
netsh advfirewall set allprofiles state off //Windows Server 2003之后的版本
查看防火墙配置
netsh firewall show config
修改防火墙配置
/*WindowsServer 2003及之前的版本*/
允许指定程序全部连接
netsh firewall add allprogram c:\nc.exe "allow nc" enable
/*WindowsServer 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
自定义防火墙日志储存位置
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
查看代理配置情况
查看服务器127.0.0.1的8080端口的代理配置信息
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
查询并开启远程连接服务
查看远程连接端口(显示出来的是16进制)
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V portNumber
在Windows Server 2003中开启3389端口
wmic path win32_terminalservicesetting where (_CLASS !="") call setallowtsconnections 1
在Windows Server 2008和Windows Server 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 setuserauthenticationrequeired 1
reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
查询当前权限
获取域SID
whoami /all
查询指定用户的详细信息
net user XXX /domain
判断是否存在域
收集了本机 相关信息后就要判断内网中是否存在域。如果存在,就需要判断所控主机是否在域内
使用ipconfig命令
执行ipconfig /all,得到域名,然后通过反向解析查询命令nslookup来解析域名的ip地址,判断域控制器和DNS服务器是否在同一网段
nslookup hack.testlab
查看系统详细信息
如果域为“WORKGROUP”表示当前服务器不在域内
systeminfo
查询当前登陆域及登陆用户信息
工作站域DNS名称为域名(如果是workgroup表示非域)
登陆域表示当前登陆的是域用户还是本地用户
net config workstation
判断主域
域服务器通常会作为时间服务器使用
net time /domain
1、存在域但当前用户不是域用户:
发生系统错误5,拒绝访问
2、存在域且当前用户是域用户
3、不存在域
探测域内存活主机
利用NetBIOS快速探测内网
nbtscan - NETBIOS nameserver scanner (unixwiz.net)
利用ICMP协议快速探测内网
使用命令循环ping整个c段
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="
扫描域内端口
查询端口开放信息,了解主机开放服务,还可以找出其开放服务的漏洞
利用telnet命令进行扫描
如果只是像快速探测某台主机的某个常规高危端口是否开放,使用telnet命令是最方便的(需要打开服务)
Metasploit端口扫描
search portscan查找模块
使用auxiliary/scanner/portscan/tcp模块
Nishang的Invoke-PortScan模块
首先更改powershell脚本执行策略
使用 Import-Module .\nishang.psm1将Nishang导入
使用Get-Command -Module nishang 查看导入命令
使用Get-Help Invoke-PortScan -full命令查询Invoke-PortScan脚本使用方法
Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.255 -ResolveHost
收集域内基础信息
确定了当前内网拥有的域,且所控制的主机在域内,就可以进行域内相关的信息收集了
查询域
net view /domain
查询域内所有计算机
可以通过计算机的名称初步判断
例如dev是开发服务器。NAS是存储服务器。fileserver是文件服务器
net view /domain:HACKE
查询域内所有用户组列表
net group /domain
可以看到,该域内有13个组。系统自带的常见用户身份如下
Domain Admins::域管理员。
Domain Computers:域内机器。
Domain Controllers:域控制器。
Domain Guest:域访客,权限较低。
Domain Users:域用户。
Enterprise Admins:企业系统管理员用户。
在默认情况下, Domain Admins和 Enterprise Admins对域内所有域控制器有完全控制权限。
查询所有域成员计算机列表
net group "domain computers" /domain
获取域密码信息
获取域密码策略,长度,错误锁定等信息
net accounts /domain
获取域信任信息
nltest /domain_trusts
查找域控制器
查看域控制器的机器名
机器名为DC
nltest /DCLIST:hacke
netdom query pdc
查看域控制器的主机名
主机名为dc
Nslookup -type=SRV _ldap._tcp
查看当前时间
net time /domain
查看域控制器组
其中有一台机器名为DC的域控制器(实际网络中一般存在两台域控制器,防止故障)
net group :Domain Controllers" /domain
获取域内的用户和管理员信息
查询所有域用户列表
net user /domain
其中krbtgt用户不仅可以创建票据授权服务的加密密钥,还可以实现多种域内权限持久化方法
获取域内用户的详细信息
常见参数包括用户名、描述信息、SID、域名、状态
wmic useraccount get /all
查询本地管理员组用户
net localgroup administrators
Domain Admins组中的用户默认为域内机器的本地管理员用户
查询域管理员用户
net group "domain admins" /domain
查询管理员用户组
net group "Enterprise Admins" /domain
定位域管理员
定位域管理员常规的渠道:日志和会话。
日志是指本地机器的管理员日志,可以使用脚本或者Wevtuyil工具导出查看。
会话是指域内每台机器的登录会话,可以使用netsess.exe或PowerView等工具查询
PowerView脚本
powershell.exe -exec bypass -Command "& {Import-Module C:\Users\testuser\PowerView\PowerView.ps1; Invoke-UserHunter}"
查找域管理进程
列出本机的所有进程及进程用户
tasklist /v
利用Powershell收集域信息
PowerView脚本
PowerSploit进入Recon目录
使用 Import-Module .\PowerView.ps1将PowerView导入
Power View的常用命令如下。
Get-NetdDomain:获取当前用户所在域的名称。
Get-NetUser:获取所有用户的详细信息。
Get-NetDomain Controller:获取所有域控制器的信息
Get-NetComputer:获取域内所有机器的详细信息。
Ge- 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:根据用户日志查询某域用户登录过哪些域机器。
Powershell脚本执行策略
为了防止使用者运行恶意脚本, Powershell提供了一个执行策略。在默认情况下,这个执行策略被设置为“不能运行”。
如果 Powershell即本无法运行,可以使用下面的 cmdlet命令查询当前的执行策略。
Get-Executionpolicy
设置执行策略Set-executionpolicy <policy name>
Restricted:脚本不能运行(默认设置)。
RemoteSigned:在本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书签名的除外)。
AllSigned:仅当脚本由受信任的发布者签名时才能运行。
Unrestricted:允许所有脚本运行。
本文来自博客园,作者:1_Ry,转载请注明原文链接:https://www.cnblogs.com/1-Ry/p/15156357.html