安全运营内刊|内网狩猎-信息收集思路与工具
01内网信息收集基础与思路
不论在内网中还是在外网中,信息收集工作的深度与广度都是决定渗透测试成败的关键步骤。在攻击者的角度上,能否通过内网信息收集掌握目标网络拓扑结构,找出内网最薄弱的突破口,直接影响到最终是否能拿下目标。而对于防守方来说,内网中有大量核心敏感数据,是网络安全建设关注的重点。因此,了解攻击者的操作流程,对内网安全防护工作也至关重要。
02本机信息与权限
对于一台内网机器,我们需要掌握其在内网中的角色是什么,其使用者的角色是什么,以及机器上安装了哪些杀毒工具。
2.1 手动收集
本机信息包括主机的系统信息、权限、内网IP、杀软信息、端口、服务、补丁更新频率、网络连接信息、共享、会话等。域内主机一般批量安装系统、杀毒软件、补丁、服务等。通过一台域内主机信息的收集可以进一步了解整个域内主机的操作系统版本、软件及补丁信息。
2.1.1 查询网络配置信息(入门级命令)
功能:获取当前机器是否处在内网中、有几个内网、内网段分别是多少、是否是域内网、网关IP地址、DNS指向的IP地址等信息,如图所示:
ipconfig/all
2.1.2 查询操作系统和版本信息(入门级命令)
systeminfo|findstr/B/C:"OSName"/C:"OSVersion" //英文操作系统
systeminfo|findstr/B/C:"OS名称"/C:"OS版本" //中文操作系统
2.1.3 查看系统结构
echo%PROCESSOR_ARCHITECTURE%
2.1.4 查看安装的软件及版本、路径等
wmicproductgetname,version
2.1.5 查询进程列表
该命令可以查看当前进程列表和进程用户,分析杀毒软件、邮件客户端、VPN等软件进程
tasklist
执行如下命令可查看进程详细信息
wmicprocesslistbrief
2.1.6 查看启动程序信息
wmicstartupgetcommand,caption
2.1.7 查看计划任务
schtasks/query/foLIST/v
2.1.8 查询用户列表
通过分析本机用户列表可以得知内网机器的命名规则,尤其是个人机器,基本可以推测出整个域的用户命名方式。
Netuser
2.1.9 获取本地管理员(包含域用户)信息
netlocalgroupAdministrators
在域组中,其中有几个组需要特别关注:
- IT组/研发组:往往掌握大量密码,包括内网密码、数据库密码等
- Domain Admins 组:root/administrator
- 财务组:掌握着大量的资金往来与目标企业的规划发展,并且可以通过资金,来判断出目标组织的整体架构
- CXX 组:如ceo,cto,coo等。不同的目标组织名字不同
- HR 组:主机中有大量人事信息,商业秘密等
2.1.10 列出或断开本地计算机与所连接的客户端之间的回话(需要管理员权限)
netsession
2.1.11 查询端口列表(熟记)
该命令可以查看当前机器和哪些主机建立了连接,以及TCP,UDP等端口的监听及使用情况。可以先通过网络连接初步判断,再根据搜集到的其他信息综合判断。
netstat-ano
2.1.12 查看补丁列表
Systeminfo //基本命令
wmicqfegetCaption,Description,HotFixID,InstallOn //查看补丁名称、描述、ID、安装时间等信息
wmic qfe list full /format:htable>c:\hotfixes.html //导出HTML到指定位置
linux中观察是否有samba服务,或用rpm -qa查询安装了哪些软件包,有一些可以通过名字来判断是否是补丁包。域内主机通常都是批量打补丁,通过查看本机补丁列表很大概率可以找到未打补丁的漏网之鱼,需要注意系统版本、补丁信息及更新频率等。
2.1.13 查询路由表及所有可用接口的ARP(地址解析协议)缓存表
routeprint
rap-a
2.1.14 查询防火墙相关配置(入门级)
netshfirewallshowconfig
2.1.15 查询并开启远程连接服务
在命令环境中执行注册表查询语句,连接端口为0xd3d(转换10进制为3389)
REGQUERY"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp"/VPortNumber
wmic/namespace:\\root\CIMV2\TerminalServicesPATHWin32_TerminalServiceSettingWHERE(__CLASS!="")CALLSetAllowTSConnections1
2.2 自动化脚本收集
为了简化操作,可以创建一个脚本,在目标机器上完成流程、服务、用户账号、用户组、网时区等信息的查询工作。类似脚本网上有很多,也可以根据实际情况开发一个最适合的。WMIC (Windows Management Instrumentation Command-Line, Windows 管理工具命令行)是最有用的Windows命令行工具,下面推荐两个常用的内网信息收集脚本。
2.2.1 PowerView
PowerView是由Will Schroeder开发的PowerShell脚本,属于PowerSploit框架和Empire的一部分。该脚本完全依赖于PowerShell和WMI(Windows Management Instrumentation)查询。从现有的meterpreter会话中,可以使用以下命令加载和执行PowerView,以检索有关该域的信息:
2.2.2 RemoteRecon
在获得本地管理员凭证并将这些凭证共享到多个主机的情况下,可以利用WMI来执行远程主机上的态势感知。RemoteRecon由Chris Ross开发,该脚本可以捕获击键和屏幕截图,执行命令和shellcode,还可以加载PowerShell脚本以执行其他任务。在进行任何操作之前,需要使用本地管理员凭据将脚本首先远程安装到主机中,如果当前用户已经是目标主机上的本地管理员,则只需提供计算机名称。
03当前域信息与权限
3.1判断是否有域
ipconfig /all 或者 nslookup hacker.testlabsysteminfonet config workstationnet time /domain
若提示发生系统错误5,则代表是一个域用户但权限不够,提示找不到WORKGROUP的域控制器则该工作组不存在域。
3.2域内存活主机探测
内网存活主机探测是整个内网渗透环节不可缺少的一部分,可在白天和晚上分别探测以对比分析存活主机和对应的IP地址。
3.2.1 利用netbios快速探测内网(netbios是windows里网络邻居的一种协议)
扫描时注意点:
- 避免触发域内的一些防病毒软件进行报警拦截,非授权时避免使用nmap这种暴力扫描。
- 不要在目标机器上使用图形化的工具,尽量使用服务器系统自带的工具,推荐powershell脚本。
工具:Nbtscan
使用命令:nbtscan.exe IP
3.2.2利用Nmap扫描探测内网
nmap -sn -PR 10.30.3.1/24
-sn:只做ping扫描,不做端口扫描
3.2.3通过arp扫描完整探测内网
关于ARP协议:通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议。根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址
项目地址:
3.3域内端口扫描
通过查询目标主机的端口开放信息不仅可以了解所开放的服务,还可以从开放的服务中寻找漏洞,分析目标网络拓扑结构,以下三点需要特别关注:
- 端口上运行的服务
- 常见应用默认端口
- 端口的banner信息
在实际操作时,通常会使用Metasploit内置的端口进行扫描。也可以上传端口扫描工具扫描。还可以根据服务器实际环境,开发自定义端口扫描脚本扫描。在获得授权的情况下,可以直接使用Nmap,masscan等端口扫描工具获取开放的端口信息。
3.3.1利用telnet命令进行扫描
telnet协议是TCP/IP协议族的一员,是Internet远程登录服务的标准协议和主要方式。可以用来快速探测某台主机的某个常规高危端口是否开放。Windows 10版本的telnet服务默认不开启,需要自己去安装。
命令:telnet 目标ip地址 端口号
3.3.2 Msfconsole端口扫描
Msfconsole不仅提供了多种端口扫描技术,还提供了与其他扫描工具的接口,且内置在Kali系统中十分方便。内置其他扫描工具可以使用“search portscan”命令来查找。
3.3.3端口Banner信息
如果通过扫描发现端口,可以使用客户端连接工具或者nc,获取服务端的Banner信息。获取后可以在漏洞库中查找对应CVE编号的POC、EXP,搜集相关漏洞利用工具然后到目标系统中验证漏洞是否存在。从防守的角度来看可以有针对性的进行安全加固。
3.4域内基础信息收集
确定了当前内网环境拥有域且所控主机在域内之后,我们就可以进行域内相关信息收集了。需要注意的是,域内查询命令遵循LDAP协议,只有域用户才可以运行相关命令,域内除普通用户外所有的机器都拥有一个机器用户,其用户名为机器名+$。System权限用户对应的就是域内机器用户。
3.4.1常用域内查询命令
- net view /domain 查询域
- net view /domain:HACKER 查询域内所有计算机,可以通过查询到的主机名称初步判断主机角色。例如“dev”可能是开发服务器,“Web”、“APP”可能是Web服务器,“NAS”可能是存储服务器等。
- net group /domain 查询域内工作组,通常包含默认,在默认情况下Domain Admins、Enterprise Admins对域内所有控制器有完全控制权限。(只能在域控中进行)
- net group “domain computers” /domain 查询域成员命令(只能在域控中进行)
- net accounts /domain 域内密码策略,获取密码长短,错误锁定等信息
- nltest /domain_trusts 获取域信任信息
04域分析工具BloodHound
BloodHound 是一款免费工具。以用图与线的形式,将域内用户、计算机、组、Sessions、ACLs以及域内所有相关信息、控制策略之间的关系更直观的展现在用户面前,分析域内情况更加便捷。BloodHound可以在域内导出相关信息,将采集的数据导入本地Neo4j数据库,并展示和分析。Neo4j是一款NoSQL图形数据库,将结构化数据存储在网络内而不是表中。BloodHound正是利用Neo4j这种特性,通过合理的分析,直观地以节点空间的形式表达相关数据,帮助渗透测试人员更快速的进行域内提权。
项目地址:
05内网敏感信息防护
目前很大一部分企事业单位都把信息安全的重点放在防范外部的攻击,并依赖于防火墙、防病毒、入侵检测等软件。往往忽略了对拥有大量敏感数据的内网安全防护。内网数据防护的第一步就是熟悉攻击者获取数据的思路和流程,在实战中攻击者主要通过各种恶意方法查找定位内部相关人员的机器,从而获得数据,大致流程如下:
- 定位内部人事的组织结构。
- 在内部人事组织结构中寻找有价值的人员
- 定位有价值人员的机器
- 查找有价值人员存放文档的位置
- 列出存放文档的服务器目录
- 文件/数据回传
由此可知,重点核心业务机器是攻击者比较关心的机器,我们对核心业务机器的防护更应该重视并加大安全措施。