黑客网站入侵 编程 搭建 渗透 破解
3.64K subscribers
418 photos
13 links
Download Telegram
freemarker.template.utility.ObjectConstruct 是 FreeMarker 模板引擎中的一个辅助类,主要用于创建 Java 对象,并将其转换为 FreeMarker 可以识别和处理的模板数据模型。这使得模板可以动态地实例化对象,并将它们传递给模板进行渲染。

freemarker.template.utility.JythonRuntime 是 FreeMarker 模板引擎中的一个辅助类,它用于与 Jython(一个基于 Java 的 Python 解释器)进行交互。通过这个类,FreeMarker 模板可以执行 Python 脚本,从而在模板中动态执行 Python 代码,并将结果用于模板渲染。
该方法重写了 Writer 类中的 flush 和 close 方法。在此实现中,接收到的字符序列会被附加到一个 StringBuilder 缓冲区中。当调用 flush 时,会执行 interpretBuffer 方法,该方法从缓冲区 buf 中提取字符串内容,并通过 exec 执行这些内容作为 Python 代码。
<#assign> 标签用于在模板中定义变量。通过使用 <#assign> 标签,你可以将一个值赋给变量,并在模板的其他部分引用和使用这个变量。这使得在模板中能够创建和操作变量,从而支持更复杂的逻辑和功能。
导入表(Import Directory)存储了有关PE文件在运行的生命周期中所需要的API以及相关的dll模块。
有些AV/EDR会根据
导入表中记录的API来判定一个程序是否为高危文件,比如说一个文件在1MB以内,出现了 VirtualAlloc、VirtualProtect、CreateThread 等敏感API时,很大概率会判定为高危文件。

很多工具可以查看文件的导入表,常见的有studyPE+、IDA。

在本节中,我将详细介绍动态获取API函数的三种方式,它们分别是

1. GetModuleHandle+GetProcAddress 的组合获取所需的API函数指针

2. 使用 PEB 获取 GetModuleHandle 和 GetProcAddress 的函数指针,再利用 GetModuleHandle+GetProcAddress 获取所需要的API函数指针

3. 使用 PEB 获取所需要的API函数指针

网上也有人用 LoadLibrary 作为 GetModuleHandle 的平替,其效果相差无几,只是它们的机制有些区别,比如说在 自举的代码幽灵——反射DLL注入(Reflective DLL Injection) 中我们就是利用 LoadLibrary+GetProcAddress 给我的恶意DLL加载相应的DLL获取需要的API函数指针,值得关注的一点是恶意DLL是由其自身的导出函数 ReflectiveLoader 完成自身的加载,这意味着相应的DLL并没有加载到自身的地址空间中,所以需要利用 LoadLibrary 而不应该使用 GetModuleHandle。
首先,MessageBoxW 这个弹窗API是由user32.dll导出的,我们直接使用API,编译后查看导入表信息,发现确实存在 MessageBoxW 这个API的记录
查看其导入表,发现没有 MessageBoxW 的相关信息。
1. 使用加密版将shellcode加密,并输出

2. 将shellcode保存到shellcode.txt

3. 用VS的MSVC或Cling-cl编译解密版的代码,注意编译和shellcode位数保存一致,如shellcode是x64,编译的时候要用x64位。

4. 将编译好的exe和shellcode.txt放到目标上,保证这两个文件在同一个目录
bshare插件引发的网站劫持事件剖析

QAX通报的“bshare分享插件被黑?百万级网站被劫持事件”报道的大概逻辑如下:

● 大量网站引用了名为bshare的分享按钮插件,该插件对应的服务域名为static.bshare.cn;

● 网站使用bshare组件时,需要在原网页中插入bshare网站的js资源;

● QAX通过对域名static.bshare.cn的分析,确认这是一起通过抢注过期通用插件服务域名来实施大范围网页劫持的攻击事件;

● 用户访问被嵌入了恶意js资源的网站时,网页内容会被劫持至同一色情网页处;
网页被嵌入第一段JS代码

为了搞清楚其劫持原理,笔者尝试从代码层面对其整个劫持原理进行了研究剖析。

通过查看其网页源代码,我们发现在源代码中确实存在嵌入第三方js资源代码的情况。

被嵌入的JavaScript代码如下:

1
2
<script language="javascript" src="https://www.zuizhongjs.com/js/24/12/7/ky1.js" type="text/javascript"></script>
劫持至博彩网站

通过分析,网页在成功加载资源后,即会从此响应数据中提取最终的博彩网站的资源地址,随后对其进行加载。

为了探究此次网页劫持的影响范围,笔者尝试基于网上平台进行了扩线分析,发现存在加载恶意js资源的网站确实还不少。
了解Qemu模拟运行Linux内核的基本执行流程

QEMU 是一个开源模拟器,广泛用于虚拟化不同架构的操作系统。在启动 Linux 内核时,QEMU 通过 qemu-system-x86 命令初始化虚拟机环境。这一过程包括设置 CPU、内存和设备模拟,确保虚拟机能够运行目标操作系统。

通过QEMU启动内核以及加载文件系统:

内核加载与执行: QEMU 加载内核映像文件,通常为 bzImage(压缩的内核)或 vmlinux(未压缩的内核)。根据 QEMU 文档,用户可以通过 -kernel 选项指定内核文件路径。内核加载后,会自动解压(如果为 bzImage),然后开始执行,完成硬件初始化(如设置内存结构、加载驱动)。
Initramfs(Initial RAM Filesystem)是 Linux 启动过程中的临时根文件系统,通常以 initramfs.cpio 格式存在。根据 Gentoo Wiki,其主要目的是为内核提供一个最小化的用户空间环境,以加载必要的驱动和挂载真实根文件系统。

● 加载与挂载: 内核检测到 Initramfs 文件后,将其解压并挂载为内存中的临时根文件系统(/)。这一过程通过 cpio 归档格式实现,内容包括基本的 shell、工具(如 busybox)和配置文件。

● 作用: Initramfs 特别适用于需要特殊驱动(如 RAID、LVM 或加密文件系统)的系统。例如,Debian Wiki 指出,Initramfs 允许在挂载真实根文件系统之前加载内核模块,增强了启动的灵活性。

● 解释补充: 用户提供的图表正确描述了这一阶段,但需要强调 Initramfs 是启动过程中的关键步骤,尤其在复杂存储配置下(如 USB 启动或加密分区)。
不同类型的渗透测试包括网络服务、应用程序、客户端、无线、社会工程和物理。

渗透测试可以外部或内部进行,以模拟不同的攻击媒介。

根据每个测试的目标,渗透测试人员可能对他们试图突破的环境和系统有或没有预先了解。

这分为黑盒、白盒和灰盒渗透测试。
网络渗透测试的阶段
1. 规划和侦察:这一初始阶段涉及收集尽可能多的有关目标网络的信息。其中包括确定范围、目标和交战规则。侦察可以是被动的(例如,从公共来源收集信息),也可以是主动的(例如,网络扫描)。

2. 扫描:下一阶段涉及识别开放端口、服务和潜在漏洞。Nmap 和 Nessus 等工具通常用于扫描和漏洞评估。

3. 获取访问权限:此阶段涉及利用已识别的漏洞获取网络访问权限。技术可能包括 SQL 注入、网络钓鱼和利用未打补丁的软件。

4. 保持访问权限:一旦获得访问权限,测试人员就会尝试保持其在网络中的存在。这可能涉及安装后门或创建用户帐户以确保持续访问。

5. 分析和报告:测试结果将汇编成详细报告。报告包括已识别的漏洞、利用方法、潜在影响以及补救建议。

6. 补救和重新测试:解决漏洞后,进行重新测试以确保问题得到有效缓解
在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。

执行net share命令,可以获得Windows默认开启的网络共享,其中C$为C盘共享,ADMIN$为系统目录共享,还有一个IPC$共享
在域渗透中、作为渗透测试人员,获取域控的权限基本上可以获取整个内网的权限。可以通过定位域管理员所登录的服务器,利用漏洞获取服务器system权限,找到域管理的账号、进程或是身份验证令牌,从而获取域管理员权

环境配置
设置pc1主机为10.10.10.158

设置域控IP地址为10.10.10.137

搭建完成
配置用户,添加test用户,密码为pass1234

通过高权限读取本地密码
当域管理员在域成员机器上登录进行工作的时候,会将明文密码保存在本地进行的lsass.exe,可以通过mimikatz来读取到本地的明文密码
CLAP是一个强化学习PPO 代理,在模拟计算机网络环境中执行渗透测试
网络攻击模拟器 (NASim) 是一个模拟计算机网络,具有漏洞、扫描和漏洞利用,旨在用作 AI 代理的测试环境和应用于网络渗透测试的规划技术。

然而,与原始论文相比,此 repo 做出了以下更改

基于CleanRL开发
为 POMDP 场景添加 LSTM
由于循环无模型强化学习可以成为许多 POMDP 的强大基线
为了支持 NASim 2D 观察空间,Transformer已实施为先例

用于Conda管理python环境和Poetry管理包。开始

克隆此 repo:

git clone /github.com/yyzpiero/RL4RedTeam.git
创建 conda 环境:

conda create -p ./venv python==X.X
并使用 poetry 安装所有 Python 包:

poetry install
后渗透框架

后渗透框架可在网络渗透测试期间轻松保持对受感染目标的访问和控制。以下在渗透测试生涯中可能遇到的一些框架。

钴攻击

Cobalt Strike用于模拟对手和红队行动的黄金标准后开发和命令与控制 (C2) 框架。包含许多功能,可模拟现实世界威胁行为者的战术、技术和程序 (TTP),并且可通过其资源和社区工具包进行扩展。
通过对攻击过程的分析,可以发现,整个攻击流程实际上仅包含两个步骤:诱导复制和诱导粘贴。因此,使用 Procmon 进行监控时,发现当用户通过 Win+R 打开运行窗口并输入命令时,系统会在注册表路径 HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerRunMRU 下创建新的键值,并将命令写入。
下载项目至本地,点击index.html。并且修改index.html第423行,加上项目路径。
用户点击方框,此时粘贴板已复制了攻击命令(可自定义):

mshta file://C:Users用户名Desktopecaptcha-phish-mainecaptcha-verify # ''I am not a robot - reCAPTCHA Verification ID: 3495''

如果此时用户被诱导,打开windows+R,并且输入命令,则此时用户将会执行恶意payload。并且在用户视角看上去,仅看到 ''I am not a robot - reCAPTCHA Verification ID: 3205''。
在32位系统下获得PEB

方法一:从TEB出发

在32位系统上,FS寄存器承担了GS寄存器的角色,TEB的指针存放在FS寄存器偏移0x18的位置上可以利用 __readfsdword(0x18) 这个宏定义读取TEB的指针。

在TEB结构体0x30的位置上存放着PEB的指针
获取PEB结构体的地址

不同位数系统的下的PEB结构体在TEB或者寄存器中的偏移量是不同的,且同一位数系统下都存在着两种获取PEB的方法,下面我将详细介绍。

首先我们要明白,GS/FS寄存器存储着当前TEB指针,而TEB结构体偏移0x30/0x18的位置上也存储着当前TEB指针,所以就出现了两种方法获取PEB指针的方法,它们之间的适用场景不同。

方法一:避免直接依赖寄存器,兼容性更强。可以规避对 0x60 偏移的系统调用监控(如CrowdStrike的PEB扫描规则)
方法二:代码简洁、效率高,常用于shellcode开发。
在64位系统下获得PEB

方法一:从TEB出发

TEB的指针存放在 GS 寄存器偏移0x30的位置,而Visual Studio提供 __readgsqword(0x30) 这个宏定义,可以方便我们读取TEB指针。

在线程环境块 (TEB) 结构中是存放着指向 PEB 结构的指针,PEB指针在TEB结构体中偏移0x60的位置上。
1. shellcode加密采用 混淆加密 中的自定义 XOR 加密和Base64编码

2. shellcode分离加载采用 中的本地读取文本文件中的shellcode

3. 使用 特征修改 中的修改VS的默认编译选项, 不使用 特征修改 中的修改时间戳、加签名等手段,不使用 转换 、 保护 的相关技术。

4. 按主题采用相应的技术(如本节 动态获取API函数)进行免杀测试,如果一种方法不行会采用多种防御规避技术的组合。

5. 加载器的实现我使用的是APC & NtTestAlert Injection
Slow Loris 攻击 – Slowloris 是一个 DDoS 工具包,它会向目标服务器发送部分请求,以尽可能长时间保持连接打开。同时,它会以一定的间隔发送 HTTP 标头,这会增加请求,但从不建立任何连接。这种类型的 DDoS 攻击很快就会瘫痪一个网站。它需要的带宽很少,而且只影响目标服务器的 Web 服务器,几乎不会对其他服务和端口产生任何副作用。它的工作原理是打开到目标 Web 服务器的多个连接,并尽可能长时间保持它们打开。它不断发送部分 HTTP 请求,但这些请求都不会完成。最终,目标服务器的最大连接池会被填满,其他连接尝试将被拒绝。

当受攻击的套接字超时时,Slowloris 会重新启动连接,继续使 Web 服务器负载过大。它移动缓慢,但稳定,并且可以持续很长时间。Slowloris 的设计既隐蔽又有效,可以修改为在虚拟主机成为目标时发送不同的主机标头,并且为每个虚拟主机单独存储日志。更重要的是,在攻击过程中,Slowloris 可以设置为抑制日志文件创建。这意味着攻击可以出其不意地打未监控的服务器一个措手不及,而日志文件条目中不会出现任何危险信号。