内网渗透前言之基础知识
本篇文章环境为Windows,内容为网上查找到的以及本人自己编写,如果侵权请联系删除,不涉及内网工具的使用以及内网攻击思路。
1、内网基础
1.1、工作组
将不同的计算机按功能(或者部门)分别列入不同的工作组以实现对网络的管理不至于混乱。
1.2、域
域(Domain):域是一个有安全边界的计算机集合(安全边界的意思是在两个域中,一个域的用户无法访问另一个域中的资源)。
1.2.1、域控制器(也就是常说的域控)
域控制器(Domain Controller,DC)是域中的一台类似管理服务器的计算机,域控制器负责所有连入计算机和用户的验证工作,域控制器是整个域的通信枢纽,所有的权限身份验证都在域控制器上进行。
1.2.2、单域
通常在一个地理位置固定的小公司里,建立一个域就可以满足需求。在一个域中,一般要有至少两台域服务器,一台作为DC(父域),另一台作为备份DC(辅域)。
1.2.3、父域和子域
出于管理及其他需求。需要在网络中划分多个域。第一个域称为父域,各分部的域称为该域的子域。
1.2.4、域树
域树(Tree)是多个域通过建立信任关系组成的集合。一个域管理员只能管理本域,不能访问或者管理其他域。
1.2.5、域森林
域森林(Forest)是指多个域树通过建立信任关系组成的集合。
1.2.6、域名服务器
域名服务器(Domain Name Server,DNS)是指用于实现域名和与之相对应的IP地址转换的服务器,在内网渗透中,大都是通过寻找DNS服务器来确定域控制器的位置的(DNS服务器和域控制器通常配置在同一台机器上)。
1.3、 活动目录
活动目录(Active Directory,AD)是域环境中提供目录服务的组件。如果将企业的内网看成是一本字典,那么内网里的资源就是字典的内容,活动目录就相当于字典的索引。即活动目录存储的是网络中所有资源的快捷方式,用户通过寻找快捷方式而定位资源。AD库存放了网络中的众多对象的信息。将AD数据库安装在一台计算机上,这时这台计算机即为DC(域控制器)。
1.4、DMZ
DMZ称为”隔离区“,也称”非军事化区“。为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。DMZ区通常位内部网络和外部网络之间的小网络区域内,DMZ区中通常部署一些公开的服务,如企业Web、FTP服务器等。
2、内网环境信息收集
进入内网首先第一步就是考虑如何在不被发现的前提下收集内网中的信息,在不动用黑客工具的前提下,一般就需要去用一些Windows的正常命令来进行收集。这些命令也是Windows应急中的一些常用命令
0x01一些查询常用命令
1、查询网络配置信息
ipconfig /all
2、查询进程列表
tasklist /svc
3、查询启动项信息
wmic startup get command,caption
4、查看计划任务
schtasks /query /fo list /v
5、查询用户列表
net user
使用以下命令获取本地管理员(通常包含域用户)信息:
net localgroup administrators
6、查看当前在线用户
query user || qwinsta
7、查询端口信息
netstat -ano
8、查询本机补丁列表
systeminfo
9、查询本地共享列表
net share
10、查询路由表
route print
arp -a
11、查看当前用户权限
whoami
12、获取域SID
whoami /all
0x02判断是否存在域
(1)使用ipconfig命令,获取DNS域名后,再使用反向解析查询命令nslookup来解析域名的ip地址,用解析得到的IP地址进行对比,判断域控制器和DNS服务器是否再同一台服务器上
ipconfig /all 【假设获取的dns服务器域名为"hacker.lad"】
nsllokup hacker.lad
(2)查看系统详细信息,“域”即域名,“登录服务器”为域控制器,如果“域”为“workgroup”。表示当前服务器不在域内。
systeminfo
(3)查询当前登录域及登录用户信息
“工作站域DNS名称”为域名(如果为“WORKGROUP”,表示当前为非域环境),“登录域”用于表示当前登录的用户是域用户还是本地用户,此处表示当前登录的用户是本地用户。
net config workstation
(4)判断主域
域服务器通常会同时作为时间服务器使用,我们可以使用以下命令来判断主域
net time /domain
执行以上命令,通常会有以下三种情况:
- 存在域,但当前用户不是域用户;
- 存在域,且当前用户是域用户;
- 当前网络环境为工作组,不存在域。
0x03域内收集信息
如果确定当前内网拥有域,且所控制的主机在域内,就可以进行域内相关信息的收集了,以下使用到的查询命令在本质上都是通过LDAP协议到域控制器上进行查询的,所以在查询时会进行权限认证,只有域用户才拥有此权限,本地用户无法运行以下介绍到的查询命令。
1、查询域
net view /domain
2、查询域内所有计算机
net view /domain:HACK (假设查询得到的主机名为HACK)
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只在win2003以上有自带
nltest /domain_trusts
nltest /domain_trusts /all_trusts /v /server:域控地址 【获取域控所信任的域】
nltest /dsgetdc:HACK /server:域控地址 【获取域HACK的详细信息】
7、csvde的使用
csvde是windows server 2008的内置命令行工具,位于%windir%/system32文件夹中。如果安装了AD DS 或Active Directory轻型目录服务(AD LDS)服务器角色,则此功能可用。
适用于: windows server 2003、windows server 2008、windows server 2003 R2、windows server 2008 R2、windows server 2012、windows8的windows server 2003
csvde -setspn hack -f c:\windows\tmp\hack.csv 【hack为域控】
参考:https://www.cnblogs.com/micr067/p/11923383.html
8、setspn的使用
setspn -T hack -Q */* 【hack为域控】
SPN官方名称即”服务主体名称”,本质上存的就是域内各种服务资源的对应关系,如对应的服务类型是什么,机器名是多少,服务端口是多少,借助SPN我们可以快速定位当前目标域中所有存活的各类服务器。
9、dnsdump的使用
dnsdump.exe -u 域名\域用户 -p 域密码 域控机器名
使用该工具我们可以很快获得域控下活动的ip。
0x04查找域控
1、查看域控制器的主机名
nslookup -type=SRV _ldap._tcp
2、查看域控制器的机器名
nltest /DCLIST:hacke
3、查看当前时间
在通常情况下,时间服务器为主域控制器
net time /domain
4、查看域控制组
net group "Domain Controllers" /domain
在实际网络中,一个域内一般存在两台或两台以上的域控制器,其目的是:一旦主域控制器发生故障,备用的域控制器可以保证域内的服务和验证工作正常进行。
0x04获取域内的用户和管理员信息
1、查询所有域用户列表
1.1、向域控制器进行查询
net user /domain
1.2、获取域内用户的详细信息
执行如下命令,可以获取域内用户的详细信息,比如用户名、描述信息、SID、域名、状态等。
wmic useraccount get /all
1.3、查看存在的用户
dsquery user
1.4、查询本地管理员组用户
net localgroup administrators
2、查询域管理员用户组
2.1、查询域管理员用户
net group "domain admins" /domain
2.2、查询管理员用户组
net group "Enterprise Admins" /domain
3、Windows防火墙相关操作
关于Windows的防火墙也是我们在内网时需要重点关注的地方
0x01关闭防火墙
(1)windows server 2003 及之前的版本,命令如下:
netsh firewall set opmode disable
(2)windows server 2003之后的版本,命令如下:
netsh advfirewall set allprofiles state off
0x02查看防火墙配置
netsh firewall show config
0x03修改防火墙配置
(1)windows server 2003及之前的版本,允许指定程序全部连接,命令如下:
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
(2)windows server 2003之后的版本,命令如下:
netsh advfirewall firewall add rule name=”My Application” dir=in action=allow program=”c:\nc.exe” enable=yes
(3)允许3389端口放行:
netsh advfirewall firewall add rule name=”remote desktop” protocol=TCP dir=in localport=3389 action=allow
0x04查询并开启远程连接服务
(1)在windows server 2003中开启3389端口
wmic path win32_terminalservicesetting where (_class !="") call setallowtsconnections 1
(2)在windows server 2008 和windows server 2012中开启 3389端口
1、wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (_CLASS !="") call setallowtscoonections 1
2、wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1
3、red add "HKLM\SYSTEMCURRENT\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /f 0 /f