内网安全攻防(二)

内网信息收集

既然是研究内网了,相当于是说我们已经拿到一台机器,判断它所处的位置(逻辑),分析它的身份(上是否是内网里的机器,是什么样的机器)。。。。。

主要思考三个方面:
1.当前机器的角色
web服务器;开发测试服务器;公共服务器;文件服务器;代理服务器;DNS服务器;存储服务器
2.当前机器所处网络环境的拓扑结构

3.当前机器所处的区域

收集本机信息

一、手动搜集

搜集本机:os;权限;内网IP地址段;杀毒软件;端口;服务;补丁更新频率;网络连接;共享;会话

假设拿到一台主机是Windows操作系统

1.查询网络配置:
ipconfig /all

2.查询操作系统及软件的信息
查询os和版本信息
systeminfo | findstr /B /C:”OS Name” /C:”OS Version”
如果是中文版os
systeminfo | findstr /B /C:”OS 名称” /C:”OS 版本”

查系统体系结构
echo %PROCESSOR_ARCHITECTURE%

查询安装的软件以及版本
wmic product get name,version
如果使用powershell来查
powershell “Get-WmicObject -class Win32_Product |Select-Object -Property name,version”

3.查询本机服务
wmic service list brief

4.查询进程列表
查看进程用户,分析软件,邮件客户端,VPN,杀软等
tasklist
查看进程信息
wmic process list brief

5.查看启动程序信息
wmic startup get command,caption

6.查看计划任务
schtask /query /fo LIST /v

7.查看开机时间
net statistics workstation

8.查看用户列表
net user
通过分析用户列表,总结出内网机器的命名规则,于是可以推出其他机器的名称,进而知道整个域

获取本地管理员信息
net localgroup administrators

看当前在线用户
query user || qwinsta //测试不成功

9.列出或者断开本地计算机与所连接的客户端之间的会话
net seesion

10.查看端口
netstat -ano //端口信息可以参考之前关于信息收集文章中的端口

11.查看补丁
systeminfo

查看安装在系统的补丁
wmic qfe get Caption,Description,HotFixID,InstalledOn

12.查询本机共享列表
net share

或者用
wmic share get name,path,status

13.查询路由表以及可用接口的ARP缓存表
arp -a

14.防火墙
关闭win2003之前的防火墙:netsh firewall set opmode disable
关闭win2003之后的防火墙:netsh advfirewall set allprofiles state off

查看防火墙配置
netsh firewall show config

修改防护墙配置
win2003之前:netsh firewall add allowedprogram c:\nc.exe “allow nc” enable
win2003之后:
(1)允许指定程序进入
netsh advfirewall firewall add rule name=”pass nc” dir=in action=allow program=”C: \nc.exe”
(2)允许指定程序退出
netsh advfirewall firewall add rule name=”Allow nc” dir=out action=allow program=”C: \nc.exe”
(3)允许3389(远程登陆)放行
netsh advfirewall firewall add rule name=”Remote Destop” protocol=TCP dir=in localport=3389 action=allow
(4)自定义防火墙日志存储位置
netsh advfirewall set currentprofile logging filename “C: \window\temp\fw.log”

15.查看代理配置
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 server2003开启3389
wmic path win32_terminalservicesetting where (__CLASS !=””) call setallowtsconnections 1
在Windowsserver2008 windows server2012开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

可以看到,我们可以通过工具或者脚本让上述方法更加便捷,下面介绍一个利用WMIC收集目标机器信息的脚本:
WMIC(windows management instrumentation command-Line).一般XP的地权限用户不能访问WMIC,win7以上的低权限用户允许访问WMIC并执行查询

二、查询当前权限

1.查询当前权限
whoami
如果当前内网存在域,那么本地普通用户只能查看本机相关的信息不能看域内信息。
但是本地管理员用户和域内用户可以查询域内信息,因为域内所有查询通过域控制器DC,是经过权限认证的,域内用户拥有权限,使用Kerberos协议认证。本地管理员权限可以提升为Ntauthority或System权限(都比administrator权限高)。
我们知道,在域中除了普通用户之外,所有机器都有一个机器用户(用户名为 机器名+”$”)

2.查询域SID
whoami /all

3.查询指定用户的详细信息
net user xxx /domain

三、判断是否存在域

1.使用ipconfig命令搜集信息
ipconfig /all
然后通过nslook解析域名的ip地址,比对看看域控制器和DNS服务器在不在同一台设备

2.查看系统详细信息
systeminfo

3.查看当前登录域以及登录用户信息
net config workstation

4.判断主域
net time /domain //该命令用来判断,会产生一些结果,域服务器通常同时作为时间服务器使用
(1)存在域,但当前用户不是域用户
(2)存在域,当前用户是域用户
(3)不存在域,当前是工作组

四、探测域内存活主机

1.利用NetBIOS探测内网
2.利用ICMP协议探测内网
3.ARP扫描探测内网
4.通过常规TCP\UDP端口探测内网

五、扫描域内端口

关注三点:
端口上的banner信息
端口上运行的服务
常见的默认端口(见以往文章)

扫的话就是用工具扫

六、搜集域内信息
假设我们知道内网存在域并且控制的机器在域内

1.查询域:
net view /domain

2.查询域内所有计算机
net view .domain:XXX //xxx指的是域的名
我们可以根据主机名来判断主机角色:
dev:可能是开发服务器
web、app:可能是Web服务器
NAS:可能是存储服务器
fileserver:可能是文件服务器

3.查询域内所有用户列表
net group /domain
系统自带常见用户身份:
domain admins:域管理员
domain computers:域内机器
domain controllers:域控制器
domain guest:域访客,权限低
domain users:域用户
enterprise admins:企业系统管理员用户
【domain admins和enterprise admins对域控制器有完全控制权限】

4.查询所有域成员计算机列表
net group “domain computers” /domain

5.获取域密码(密码策略、长度、错误锁定等)
net accounts /domain

6.获取域新人
nltest /domain_trusts

七、查找与域控制器

1.查看域控制器的机器名
nltest /DCLIST:XXX //XXX是域的名称

2.查看域控制器的主机名
Nslookup -type=SRV _ldap._tcp

3.查看当前时间
net time /domain(通常时间服务器是主域控制器)

4.查看域控制器组
net group “Domain Controllers” /domain
下面命令看到域控制器名字
netdom query pdc

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

1.向域控制器进行查询
net user /domain

2.获取域内用户的详细信息
wmic useraccount get /all

3.查看存在的用户
dsquery user

4.查询本地管理员组用户
net localgroup administrators

—查询域管理员用户组
1.查询域管理员用户
net group “domain admins” /domain

2.查询管理员用户组
net group “Enterprise Admins” /domain

九、定位域管理员
书本提到内网测试跟渗透测试是截然不同,内网测试是针对内网中特定用户或机器的权限,获取特定的资源

当设备被添加到域中,域管理员会自动添加到本地管理员组,获得完全控制权限,有时候一台设备在自己的域中不是管理员,但是可能是其他域的管理员,所以我们要寻找具有管理员权限的用户。
定位域内管理员的方式:
1.日志
2.会话

常用域管理员定位工具:
psloggedon.exe;PVEFindADUser.exe;netsess.exe;hunter;NetView

十、查找域管理进程

—本机检查

1.获取域管理员列表
net group “Domain Admins” /domain

2.列出本机所有进程以及进程用户
tasklist /v

3.寻找进程所有者为域管理员的进程

—查询域控制器的域用户会话

1.查询域控制器列表
net group “Domain Contorllers” /domain

2.收集域管理员列表
net group “Domain Admins” /domain

3.收集所有活动域的会话列表
使用Netsess.exe查询每个域控制器,使用下面命令:
NetSess -h

4.交叉引用域管理员列表与活动会话列表

—查询远程系统中运行的任务

—扫描远程系统的NetBIOS

十一、使用powershell收集域信息
在上一篇文章,也就是内网(一)提到过powershell用法

十二、使用域分析工具BloodHound


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注