内网基础知识总结
青 叶

内网基础知识总结

总结了很久的,希望不要有白嫖党直接拷贝走了还不表明源出处。

工作组

将不同的计算机按照其功能(或部门)分别列入不同的工作组;例如技术部都列入“技术部”工作组、行政部列入“行政部”工作组中。如果希望访问某个部门的资源,只要在“网络”选项中打开该部门的工作组名,即可访问该部门的所有计算机。相比与不分组情况,这样有序得多。

创建、加入工作组的方式比较简单,在计算机中属性更改工作组即可;加入一个不存在的工作组会默认新建该组。

如果希望一个账户可以在一个公司内的所有计算机登录,那么在工作组环境下,必须在所有的计算机内的SAM数据库创建该账户。如果该账户被泄露或是主动希望修改密码,则必须对所有计算机进行操作,当计算机过多时,修改密码的操作将占用大量时间与精力,而域就是应用在这种场景。

  • (Domain)是一个由安全边界的计算机集合(安全边界即两个域无法互通,一个域内的用户无法访问另一个域的资源)。用户想要访问域内资源,必须以合法的身份登录域,而用户对域内的资源拥有什么样的权限,取决于用户在域内的身份。
  • 域控制器(Domain Controller,DC)是域内的一台类似管理服务器的计算机,我们可以形象地将它理解为一个单位的门禁系统。域控制器负责所有连人的计算机和用户的验证工作。域内的计算机如果想互相访问,都要经过域控的审核。

域控中存在由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当计算机连接到域,域控会检查该计算机是否属于这个域,以及其账户密码是否正确;任意一项不通过,域控就会拒绝登录。用户在不登陆情况下,无法访问服务器中的资源。

域控是整个域的通信枢纽,所有的权限身份认证都在域控上进行,即域内的所有账号及其密码散列值都存在域控中。

单域

一般用于地理位置固定的小公司,只需建立一个域即可满足需求。一个域内,一般要两台域服务器,一个作为DC,一个作为备份DC。活动目录的数据库是存储在DC中的,如果没有备份DC,则一旦DC瘫痪,域内用户就无法登录该域。如果有备份DC,可以快速恢复DC。

父域与子域

由于管理及其它需求,需要划分多个域。第一个域一般称为父域,分部的域称为该父域的子域。

例如公司的各个分公司位于不同的地点,就需要使用到父域和子域。如果只是单纯的划分成一个域,不同地区的信息交互(同步、复制等)花费时间长、占用宽大大。划分子域后,分公司使用自己的域管理资源,而且不同域间的信息交互条目少还可以压缩,极大地节省带宽。

出于安全策略的考虑,也可以单独划分子域设定域内安全策略进行管理。

域树

域树是多个域通过建立信任关系组成的集合。一个域管理员只能管理本域而不能访问或管理其他域。如果两个域需要互通,则必须建立信任关系。域树内的父域和子域,可以按照需要互相管理,跨网络分配文件和打印机等资源,从而实现不同域间网络资源共享管理等。

在一个域树中,父域可包含子域,子域只能使用父域的名字作为其域名的尾缀,如图:

image

域森林

域森林是指多个域树通过建立信任关系组成的集合。例如,在公司兼并场景中,某公司使用域树abc.com,被兼并公司本来有自己的域树abc.net,由于abc.net无法挂在域树abc.com下,此时建立信任关系建立域森林即可保留其本身特性的同时与管理资源,如图:

image

域名服务器

DNS是指用于实现域名与相应IP转换的服务器。在域树中可以看出,域树中的域名与DNS十分相似。实际上,由于域中计算机使用DNS定位域控、服务器以及其它计算机,所以域的名字就是DNS域的名字。内网渗透中,大多寻找DNS服务器来确定域控。

活动目录

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

目录存储有关网络对象的信息,例如用户、组、计算机、共享资源、打印机和联系人等。

如果把内网看成一个字典,内网的资源是字典的内容,那么活动目录就相当于字典的索引;即活动目录存储了网络中所有资源的快捷方式,可以通过该快捷方式快速定位资源。

活动目录无需考虑被管理对象的地理位置,只要按照一定方式将其放置到不同的容器中即可。

活动目录的逻辑结构包括组织单元(OU)、域树域森林。域树内的所有域共享一个活动目录,这个活动目录内的数据分散存储在各个域中,每个域只存储该域内的数据。

活动目录主要提供一下功能:

  1. 账户集中管理
  2. 软件集中管理
  3. 环境集中管理
  4. 增强安全性
  5. 更可靠、更短的宕机时间

域控与活动目录的区别

如果网络规模较大,就要把网络中的众多对象,例如计算机、用户、用户组、打印机、共享文件等,分门别类、井然有序地放在一个大仓库中,并将检索信息整理好,以便查找、管理和使用这些对象。这个拥有层次结构的数据库,就是活动目录数据库,简称AD库。

要实现域环境,就要安装AD。如果一个计算机安装了AD,它就变成了DC。

安全域的划分

划分安全域的目的是将一组安全等级相同的计算机划入同一个网段。这个网段内的计算机拥有相同的网络边界,并在网络边界上通过部署防火墙来实现对其他安全与的网络访问控制策略,从而允许哪些IP地址访问此域、允许此域访问哪些IP地址和网段进行设置。这些措施,可以使得网络风险最小化,当攻击发生时可以尽可能地将威胁隔离,从而降低对域内计算机的影响。

一个典型的中小型内网安全域划分如图:

image

可以看到将网络分为三部分:安全级别最高的内网、安全级别中等的DMZ;安全级别最低的外网。三个区域负责不同的任务,因此需要设置不同的访问策略。

DMZ称为隔离区,是为了解决安装防火墙后外部不能访问内部网络服务器的问题而设立的一个非安全系统与安全系统之间的缓冲区。DMZ一般会防止一些公开的服务器设施,例如Web服务器、FTP服务器、邮件服务器等。

在网络边界一般会部署防火墙以及入侵检测、入侵防御产品等。如果有Web应用,还会设置WAF,从而更加有效地保护内网。

在配置一个拥有DMZ的网络时,通常需要定义如下访问控制策略,以实现其屏障功能:

  • 内网可以访问外网
  • 内网可以访问DMZ
  • 外网不能访问内网
  • 外网可以访问DMZ
  • DMZ不能访问内网;如果不执行此策略,DMZ被攻陷后则内网无法受保护
  • DMZ不能访问外网:也有例外例如邮件服务器

内网又可以分两个区域:办公区和核心区。

  • 办公区:员工日常的工作区,一般会安装防病毒软件、主机入侵检测产品等。办公区一般能访问DMZ。攻击者想进入内网,可以使用鱼叉攻击、水坑攻击,还要社会工程学手段。办公区人员多而杂,变得较为频繁,在管理上存储诸多漏洞,是攻击者进入内网的重要途经之一。
  • 核心区:存储其余最重要的数据、文档等信息资产,通过日志记录、安全审计等安全措施进行严密的保护,往往只有很少的主机能够访问。

域内计算机分类

域内计算机身份是不平等的,有以下四种类型:

  1. 域控制器(一个域必须有的)

    域控用于管理所有的网络访问,包括登录服务器、访问共享目录和资源。域控可以有多台,以分担用户登录、访问操作。多个域控可以一起工作,自动备份用户账户和活动目录数据。

  2. 成员服务器

    即指安装了服务器操作系统并且加入了域、但没有安装活动目录的计算机,主要任务是提供网络资源。

  3. 客户机

    安装了其它操作系统的计算机,用户利用这些计算机和域中的账户就可以登录域。

  4. 独立服务器

    独立服务器和域没有关系,若服务器既不加入域、也不安装活动目录,就称为独立服务器。独立服务器可以加入工作组、与网络中的其它计算机共享资源,但是不能使用活动目录提供的任何服务。

域权限

域本地组

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

重要的域本地组权限如下:

  • 管理员组
    • 成员不受限制的存取计算机、域内资源
  • 远程登录组
    • 拥有远程登录权
  • 打印机操作员组
    • 可以管理打印机,并且可以在本地登录和关闭域控
  • 账户操作员组
    • 可以创建和管理该域中的用户和组并为其设置权限,也可以本地登录域控,但是不能更改属于Administrators或Domain Admins组用户,也不能修改该组
  • 服务器操作员组
    • 可以管理域服务器,包括建立、管理、删除任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、格式化服务器硬盘等等
  • 备份操作员组
    • 成员可以在域控中备份和还原,也可以本地登录和关闭域控

全局组

单域用户访问多域资源(必须是同一个域的用户),只能在创建该全局组的域中添加用户和全局组。可以在域森林的任何域内指派权限。全局组可以嵌套在其他组中。

全局组和域本地组的关系,类似于域账户和本地账户的关系,域账户可以在域全局使用,本地账户只能本机使用。

通用组

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

总结下来就是:域本地组来自于全林、作用本域;全局组来自本域、作用域全林;通用组来自全林、作用全林

内网信息收集

本机信息收集

手动收集 - 常见命令

查询网络配置信息
1
ipconfig /all
查询操作系统及软件的信息
  1. 查询操作系统和版本信息

    1
    systeminfo | findstr /B /C:"OS"

    会显示系统信息,如图:

    image

  2. 查看系统体系结构

    1
    echo %PROCESSOR_ARCHITECTURE%
  3. 查看安装的软件及版本、路径

    利用wmic查询:

    1
    wmic product get name,version

    或者使用Powershell(必须使用Windows Powershell而不是Powershell Core)调用wmic:

    1
    powershell "Get-WmiObject -Class win32_product | Select-Object -Property name,version"
查询本机服务信息
1
wmic service list brief
查询进程

CMD里:

1
tasklist

Powershell里:

1
ps
查看启动程序
1
wmic startup get command,caption
查看计划任务
1
schtasks /query /fo LIST /v
查看主机统计信息
1
net statistics workstation
查询用户列表
  1. 查询本机用户

    1
    net user
  2. 查询本地管理员(包含域用户)

    1
    net localgroup administrators
  3. 查看当前在线用户

    1
    query user || qwinsta
列出或断开本地计算机与所连接的客户端之间的会话
1
net session
查询端口列表
1
netstat -ano
查看补丁列表
1
wmic qfe get Caption,Description,HotFixID,InstalledOn
查询本地共享列表
1
net share

利用WMIC可以使用:

1
wmic share get name,path,status
查询路由表以及ARP缓存
1
2
route print
arp -a
查询防火墙相关配置
  1. 关闭防火墙

    Win Server 2003之前:

    1
    netsh firewall set opmode disable

    之后的版本:

    1
    netsh advfirewall set allprofiles state off
  2. 查看防火墙配置

    1
    netsh firewall show config
  3. 修改防火墙配置

    Win Server 2003前,修改为允许指定程序全部连接:

    1
    netsh firewall add allowedprogram C:\xxx.exe "allow xxx" enable

    之后的版本,允许指定程序进入或退出:

    1
    netsh advfirewall firewall add rule name="allow xxx" dir=in/out action=allow program="C:\xxx.exe"

    允许3389端口通信:

    1
    netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
  4. 自定义防火墙日志的储存位置

    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. 查看远程连接端口

    1
    reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
  2. Win Server 2003中开启3389端口

    1
    wmic path win32_terminalservicesetting where (__CLASS != "") call setallowtseconnections 1
  3. 在Win Server 2008和Win Server 2012中开启3389端口

    1
    2
    3
    4
    5
    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创建一个脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"

wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

执行后会输出一个HTML文件。

查询当前权限

  1. 查看当前权限:

    1
    whoami

    若为本机普通用户,显示为主机名\用户名,例如:desktop-lqcon8a\evalexp

    若为本地管理员,显示为主机名\administrator

    若为域内用户,显示为域名\用户名

    在域中,每一个及其都有一个机器用户,用户名为**主机名$,如PC$**。

  2. 获取域SID

    1
    whoami /all

    例如输出为:

    1
    2
    3
    User Name               SID
    ======================= =============================================
    hack\user S-1-5-21-1247147951-2834560004-982910220-1001

    则表示当前hack域的SID为:S-1-5-21-1247147951-2834560004-982910220,用户user的SID为:S-1-5-21-1247147951-2834560004-982910220-1001

  3. 查询指定用户的详细信息

    1
    net user XXX /domain

判断是否存在域

ipconfig

先用:ipconfig /all查询DNS,再通过nslookup查询DNS地址:

1
2
ipconfig /all
nslookup hack.test
查看系统详细信息
1
systeminfo
查询当前登录域与登录用户信息
1
net config workstation
判断主域

利用域服务器通常作为时间服务器使用来判断:

1
net time /domain

三种情况:

  1. 存在域,但是当前用户不属于域

    返回拒绝访问

  2. 存在域且当前用户属于域

    返回时间

  3. 当前网络环境为工作组,不存在域

    返回找不到域控制器

探测域内存活主机

NetBIOS快速探测

给出工具地址:lifenjoiner/nbtscan: The NBTscan mod for Windows without dependency of cygwin (github.com)

用法:

1
.\nbtscan.exe 192.168.31.0/24
ICMP快速探测

一句话:

1
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="
ARP探测
  • arp-scan 工具
  • Empire的arpscan
  • Nishang的Invoke-ARPScan
常规TCP/UDP端口扫描

书上说可以用ScanLine。

本人其实推荐用Nmap或者CS的端扫。

扫描域内端口

Talnet扫描

直接尝试Talnet去链接端口可以判断

MSF端扫

模块:auxiliary/scanner/portscan/tcp

或者使用:db_nmap

PowerSploit

渗透Powershell脚本集合(已经非常远古了)。

地址:PowerSploit/Recon at master · PowerShellMafia/PowerSploit (github.com)

1
Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '80,8080,3389' -oA "C:\windows\temp\result.txt"
端口Banner信息

文件共享服务端口:

端口号 端口说明 使用说明
21、22、69 FTP/TFTP 匿名上传、下载、爆破和嗅探
2049 NFS服务 配置不当
139 SAMBA服务 爆破、未授权、远程代码执行
389 LDAP目录访问协议 注入、允许匿名访问、弱口令

远程连接服务端口:

端口号 端口说明 使用说明
22 SSH 爆破、SSH隧道内网转发、SCP文件传输
23 Telnet远程 爆破、嗅探、弱口令
3389 RDP远程桌面 Shift后门(Win Server 2003以下)、爆破
5900 VNC 弱口令
5632 PcAnywhere 抓取密码、代码执行

Web应用:

端口号 端口说明 使用说明
80、443、8080 常见Web服务端口 Web攻击、爆破、对应服务器版本漏洞
7001、7002 WebLogic Java反序列化、弱口令
8080、8089 JBoss/Resin/Jetty/Jenkins 反序列化、控制台弱口令
9090 WebSphere控制台 Java反序列、弱口令
4848 GlassFish控制台 弱口令
1352 Lotus Domino邮件服务 弱口令、信息泄露、爆破
10000 webmin控制面板 弱口令

数据库服务:

端口号 端口说明 使用说明
3306 MySQL数据库 注入、提权、爆破
1433 MSSQL数据库 注入、提权、SA弱口令、爆破
1521 Oracle数据库 TNS爆破、注入、反弹shell
5432 Postgresql数据库 爆破、注入、弱口令
27017、27018 MongoDB数据库 爆破、未授权、NoSQL注入
6379 Redis数据库 未授权、弱口令爆破
5000 Sysbase/DB2数据库 爆破、注入

邮件服务:

端口号 端口说明 使用说明
25 SMTP邮件服务 邮件伪造
110 POP3协议 爆破、嗅探
143 IMAP协议 爆破

常见网络协议端口:

端口号 端口说明 使用说明
53 DNS域名系统 允许区域传送、DNS劫持、缓存投毒、欺骗
67、68 DHCP服务 劫持、欺骗
161 SNMP协议 爆破、收集目标内网信息

特殊服务端口:

端口号 端口说明 使用说明
2181 ZooKeeper服务 未授权
8069 Zabbix服务 远程执行、SQL注入
9200、9300 Elasticsearch服务 远程执行
11211 Memcached服务 未授权
512、513、514 Linux rexec服务 爆破、远程登录
873 rsync服务 匿名访问、文件上传
3690 SVN服务 SVN泄露、未授权访问
50000 SAP Management Console 远程执行

域内基础信息收集

查询域
1
net view  /domain
查询域内所有计算机
1
net view /domain:XXX
查询域内用户组列表
1
net group /domain
查询域成员计算机列表
1
net group "domain computers" /domain
获取域密码信息
1
net accounts /domain
获取域信任信息
1
nltest /domain_trusts

查找域控制器

查看域控制器的机器名
1
nltest /DCLIST:XXX
查看域控的主机名
1
nsloopup -type=SRV _ldap._tcp
查看当前时间
1
net time /domain
查看域控制器组
1
2
net group "Domain Controllers" /domain
netdom query pdc

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

查询所有域用户列表
  1. 向域控查询

    1
    net user /domain
  2. 获取域内用户详细信息

    1
    wmic useraccount get /all
  3. 查看存在的用户

    1
    dsquery user
  4. 查询本地管理员组用户

    1
    net localgroup administrators
查询域管理员用户组
  1. 查询域管用户

    1
    net group "domain admins" /domain
  2. 查询管理员用户组

    1
    net group "Enterprise Admins" /domain

定位域管理员

主要通过日志和会话定位域管。

psloggedon.exe

该工具通过搜索网上邻居的计算,并显示该用户当前是否登录,原理是检查注册表中的HKEY_USERS项的Key值来查询谁登录过,因此某些功能需要管理员权限才可以用。

用法:

1
psloggedon [-] [-l] [-x] [\\computername|username]

-x不显示登录时间,-l不显示本地或网络资源登录,只显示本地登录

PVEFindADUser.exe

一般使用:

1
PVEFindADUser.exe -current
netview.exe

地址:mubix/netview: Netview enumerates systems using WinAPI calls (github.com)

绝大部分无需管理员权限即可使用。

参数:

  • -h 帮助
  • -f file 指定要提取主机列表的文件
  • -e file 指定要排除的主机名的文件
  • -o file 将所有输出重定向到指定的文件
  • -d domain 指定要提取主机列表的域;未指定就从当前域提取
  • -g group 指定搜索的组名,没有指定就搜Domain Admins组
  • -c 对已找到的共享目录/文件的访问权限进行检查
Nmap的NSE脚本

若存在域账户或本地账户,就可以用Nmap的smb-enum-sessions.nse引擎获取远程机器的登录会话。

常见的NSE:

  • smb-enum-domains.nse 收集域控信息,可以获取主机信息、用户、可使用密码策略的用户等
  • smb-enum-users.nse 进行域渗透测试时,如果获得了某台域内主机的权限,但是权限有限,无法获取更多的域用户信息,就可以借助这个脚本对域控进行扫描
  • smb-enum-shares.nse 遍历远程主机的共享目录
  • smb-enum-processes.nse 对主机的系统进程进行遍历。通过这些信息,可以知道目标主机上正在运行哪些软件
  • smb-enum-sessions.nse 获取域内主机的用户登录会话,查看当前是否有用户登录
  • smb-os-discovery.nse 收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS机器名、NetBIOS域名、工作组、系统时间等信息。
PowerView脚本

PowerSploit里的一个脚本。

  • Invoke-StealthUserHunter
  • Invoke-UserHunter
Empire的user_hunter模块

模块名:situational_awareness/network/powerview/user_hunter

查找域管理进程

域权限提升过程常常伴着明文凭据或者通过mimikatz提权等。

本机检查
  1. 获取域管理员列表

    1
    net group "Domain Admins" /domain
  2. 列出本机的所有进程及进程用户

    1
    tasklist /v
查询域控制器的域用户会话

查询域控制器的域用户会话,其原理是:再域控制器中查询域用户会话列表,并将其与域管理员列表进行交叉引用,从而得到域管理员会话的系统列表。

  1. 查询域控制器列表

    1
    net group "Domain Controllers" /domain
  2. 收集域管理员列表

    可以用LDAP查询,也可以用net:

    1
    net group "Domain /Admins" /domain
  3. 收集所有活动域的会话列表

    使用netsess查询:

    1
    NetSess -h
  4. 交叉引用域管理员列表与获得会话列表

    在拥有netsess.exe的情况下,把域控列表添加到dc.txt里:

    1
    FOR /F %i in (dc.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt && FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a
查询远程系统中运行的任务

首先从Domain Admins组中收集域管理员列表,命令如下:

1
net group "Domain Admins" /domain

然后把目标域系统列表添加到ip.txt,运行脚本:

1
FOR /F %i in (ip.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>nul > output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > nul && echo [!] %n was found running a process on %i && pause
扫描远程系统的NetBIOS信息

某些版本才允许用户通过NetBIOS查询已登录用户。

1
for /F %i in (ip.txt) do @echo [+] Checking %i && nbstat -A %i 2>nul > nbsessions.txt && FOR /F %n  in (admins.txt) DO @type nbsessions.txt | findstr /I %n > nul && echo [!] %n was found logged into %i

也可以通过nbtscan工具。

脚本:

1
for /F %i in (ip.txt) do @echo [+] Checking %i && nbtscan -f %i 2>nul > nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > nul && echo [!] was found logged into %i

利用Powershell收集域信息

可以利用PowerSploit

具体用法见Github。

域分析工具BloodHound

地址:BloodHoundAD/BloodHound: Six Degrees of Domain Admin (github.com)

这个工具的使用得先安装Neo4j。

下载地址:https://neo4j.com/artifact.php?name=neo4j-community-4.4.5-windows.zip

然后没必要照着书上来做,直接下载BloodHound,启动连接数据库即可。

图形化界面就不用多说什么,自己琢磨琢磨就玩明白了。

数据采集可以用这个工具的Collectors:BloodHound/Collectors at master · BloodHoundAD/BloodHound (github.com)

把生成的文件上传到BloodHound即可开始查看具体内容。

敏感数据的防护

重点核心业务机器及敏感信息防护
  1. 核心业务机器
    • 高级管理员、系统管理、财务、认识、业务人员个人计算机
    • 产品管理系统服务器
    • 办公系统服务器
    • 财务应用系统服务器
    • 核心产品源码服务器(SVN或者GIT)
    • 数据库服务器
    • 文件服务器、共享服务器
    • 电子邮件服务器
    • 网络监控系统服务器
    • 其它服务器
  2. 敏感信息和敏感文件
    • 站点源码备份文件、数据库备份文件
    • 各类数据库的Web管理入口,如phpMyAdmin、Adminer
    • 浏览器密码和浏览器Cookie
    • 其它用户会话、3389和ipc$连接记录、”回收站“
    • Windows无线密码
    • 网络内部的各种账号和密码,包括电子邮箱、VPN、FTP、TeamView等
应用与文件形式信息的防护

对于低版本的Office软件加密,可以使用软件破解;对于高版本的Office软件,可以通过微软SysInternals Suite套件中的ProcDump来获取密码。

域内网端划分情况以及拓扑结构

收集信息后可以尝试绘制内网的拓扑结构图,CS可以生成。

基本架构

要对目标网站的基本情况进行简单的判断,分析目标服务器所使用的Web服务器、后端脚本、数据库、系统平台等。

常见的Web架构如下:

  • ASP + Access + IIS 5.0/6.0 + Win Server 2003
  • ASPX + MSSQL + IIS 7.0/7.5 + Win Server 2008
  • PHP + MySQL + IIS
  • PHP + MySQL + Apache
  • PHP + MySQL + Nginx
  • JSP + MySQL + Nginx
  • JSP + MSSQL + Tomcat
  • JSP + Oracle + Tomcat
  • SpringBoot + MySQL + Docker
域内网段划分

安全域的划分

多层域结构

判断出内网是否存在多层域、当前计算机是几级子域、改子域的域控及根域的域控是哪些、其它域的域控是哪些、哪些域建立了域信任关系。

绘制内网拓扑图

拿到上述的各类信息,绘制出内网的拓扑图即可。

绘制出拓扑图可以快速地了解域的内部环境、准确定位内网中的目标。