内网信息收集篇
List
- 网络配置信息
- 查询操作系统和版本信息
- 查看安装软件以及版本/路径等
- 查看本机服务信息
- 查询进程信息
- 查看启动程序信息
- 查看计划任务信息
- 查看主机开机时间
- 查询用户列表
- 列出或断开本地计算机与所连接的客户端之间的会话
- 查看端口列表
- 查看补丁列表
- 查询本机共享列表
- 查询路由表及所有可用接口的路由表
- 查看防火墙相关配置
- 查看并开启远程连接服务
- 查看当前权限
- 查看域SID
- 判断是否存在域
- 查看域或工作组中的计算机列表
- 内网信息收集-工具编写
0x1 内网信息收集
本机信息收集包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新率、共享、会话等。如果是域内主机,操作系统、应用软件、补丁、服务、杀毒软件一般为批量安装的。
1. 网络配置信息
ipconfig /all
2. 查询操作系统和版本信息
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
3. 查看安装软件以及版本/路径等
wmic product get name,version
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name, version"
4. 查看本机服务信息
wmic service list brief
5. 查询进程信息
tasklist /v
wmic process list brief
6. 查看启动程序信息
wmic startup get command,caption
7. 查看计划任务信息
schtasks /query /fo LIST /v
Tips: 可能会遇到 “错误: 无法加载列资源。” 原因是cmd 编码导致执行 chcp 437 即可,但是无法打印出非ascii字符。(非ascii字符都变问号"?")
8. 查看主机开机时间
net statistics workstation
9. 查询用户列表
net user
net localgroup administrators
query user||qwinsta
10. 列出或断开本地计算机与所连接的客户端之间的会话
net session
11. 查看端口列表
netstat -anp
netstat -ano
-a 显示所有
-n 不用别名显示,只用数字显示
-p 显示进程号和进程名
-o 显示拥有的与每个连接关联的进程 ID。
Tips: 根据开放的端口,来判断本机器在内网中充当的角色。
12. 查看补丁列表
systeminfo
wmic qfe get Caption,Description,HotFixID,InstalledOn
Tips: 注意系统版本,补丁信息及更新频率,域内主机通常为批量打补丁。
13. 查询本机共享列表
net share
wmic share get name,path,status
14. 查询路由表及所有可用接口的路由表
arp -a
route print
15. 查看防火墙相关配置
关闭防火墙:
netsh firewall show config
- Windows Server 2003 之前系统。
netsh firewall set opmode disable
- Windows Server 2003 之后系统。
netsh advfirewall set allprofiles state off
修改防火墙配置:
Windows Server 2003系统及以前的版本,允许指定应用程序全部连接。
netsh firewall add allowedprogram c:\nc.exe "allow nc" ennable
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=alow
16. 查看并开启远程连接服务
reg query "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\RDP-Tcp" /v portnumber
Tips: 输出为16进制解码即可。
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 setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
Tips: 需要在管理员权限下运行。
17. 查看当前权限
whoami
hostname
Tips: 可以看到当前的机器名为 ppbibo-PC
,查询当前为 hacker
域内的 administrator
用户。
如果当前内网中存在域,那么本地普通用户只能查询本机相关的信息,不能查询域内信息,而本地管理员用户和域内用户可以查询域内信息。其原理是:域内的所有的查询都是通过域控制器来实现的(LDAP
协议),而这个查询需要经过权限认证,所以只有域内的用户才拥有这个权限,当域内用户执行查询命令时,会自动使用 Kerberos
协议进行认证,无需额外输入账号和密码。
本地管理员 Administrator
权限可以直接提升为 system 权限,因此,在域中除普通用户外,所有的机器都有一个机器用户(用户名是机器名后加上 “$”)。 机器的 system
用户对应的就是域里面的机器用户。所以使用 system
权限可以运行域内的查询命令。
当前权限为 system
可以运行域内查询命令。
当前用户为本地管理员 Administrators
组权限(不是域内用户)。
Windows 7
下获取System
权限。
sc create syscmd binPath= "cmd /K start" type= own type=interact // 创建任务
net start syscmd // 运行 syscmd 任务
sc delete syscmd // 删除 syscmd 任务
18. 查看域SID
whoami /all
当前域 hacker 的SID 为 S-1-5-21-2144123051-2929416546-191223172
,域用户 testuser 的用户SID 为 S-1-5-21-2144123051-2929416546-191223172-1107
。
19. 判断是否存在域
1. 通过网络配置信息来查询是否存在域。
ipconfig /all
通过 nslookup
查询域名解析的IP
地址,判断域控制器和DNS
服务器是否在同一个机器上。
2. 通过查询系统详细信息来判断是否存在域。
systeminfo|findstr "Domain"
systeminfo|findstr "域"
3. 查看域当前的时间
net time /domain
当前为域内用户,存在域。
当前用户为本地用户,存在域。
当前主机不存在域。
4. 查看当前登陆域
net config workstation
当前用户为本地用户所以登陆域显示计算机名称。
20. 查看域或工作组中的计算机列表
net view /domain
net view /domain:HACKER
21. 内网信息收集-工具编写
依赖上文,编写脚本。
脚本语言:Python3。
运行系统(已测试):Windows Server 2012,Windows 7。
下载地址:gayhub 已编译成EXE。
Tips: python脚本在打包时代码中尽量不要使用中文,否则打包后会出现乱码的问题,解决方法就是编码为GBK然后在打包。