ETW (Event Tracing for Windows)(没更完)
关于ETW (Event Tracing for Windows)ETW介绍事件追踪 Event Tracing for Windows (ETW) 是Windows系统内置的强大事件跟踪机制。它可以收集在系统上不同事件和活动的详细信息。这些事件可以是由系统本身发起的(例如加载一个DLL)或者由用户发起的(例如打开一个文件)。
无论是用户的程序,还是内核驱动生成的事件都会被ETW记录在日志里面,我们就可以去分析日志知道系统发生了什么。所以对防守方(杀软,EDR啥的),ETW是一个非常实用的工具
ETW的组成提供程序 (Providers) - 提供程序是最上级组件,他们负责生成事件。提供程序可以是用户模式应用、内核模式驱动程序,或 Windows 内核本身。每个提供程序由一个独有的 GUID 作为标识。
(跟踪)会话 (Tracing session) - “ETW 会话基础结构充当中间代理,将事件从一个或多个提供程序中继给使用者。 会话是一个内核对象,它将事件收集到内核缓冲区中,并将其发送到指定的文件或实时使用者进程。 可以将多个提供程序映射到单个会话,让用户能够从多个源收集数 ...
详细信息,自签名过360
详细信息,自签名过360的QVMQVM是360人工智能的一个引擎检测,QVM误报率会比较高一点,360说它是基于一个统计学的算法,类似于特征库?
我们用CS生成一段Shellcode,用以下Loader加载一下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102#include <iostream>#include <windows.h>using namespace std;extern "C" SIZE_T GetKernel32();int my_strcmp(const char* str1, const char* str2) { while (*str1 != ' ...
Cobalt Strike(持续更新)
Cobalt Strike一些概念Cobalt Strike简称cs,是一款渗透神器,主要用团队作战,由一个服务端和多个客户端组成,能让多个攻击者同时连接到团队服务器上,共享攻击资源与目标信息。是一款GUI的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。
关于Beacon 深入了解 Beacon 种类及其原理 - 先知社区 (aliyun.com)
Beacon 是 Cobalt Strike 运行在目标主机上的 Payload ,我们可以将它视为 “窃听器” ,可以配合各种方式(可执行文件、Word 文档、目标主机上的漏洞)最终组成一个我们熟悉的名词 —— 木马,最终送达到目标主机上,长期的控制它
![1728993921865](Cobalt Strike/1728993921865.png)
Cobalt Strike安装及beacon上线参考这篇文章:
红队内网渗透神 ...
PPL Attack
PPL Attackwin10配置双机调试: [Win10双机调试(Windbg+VMware+Win10LTSC) - DarkBright - 博客园 (cnblogs.com)](https://www.cnblogs.com/DarkBright/p/10843698.html#:~:text=打开 Windbg ,设置挂接选项: 设置完毕点击OK之后,虚拟系统选择,Debug 选项启动,Windbg成功中断: 双机调试配置成功,可以在命令窗口输入命令控制虚拟机里面的Win10系统 0x04 Windbg的简单使用:)
PPL保护介绍Windows 的 PPL(Protected Process Light,受保护的进程 Light)是一种安全机制,用于保护关键系统进程和受信任的程序免受恶意软件的篡改和攻击。它通过限制对受保护进程的访问来实现这一点,即使是管理员用户也无法随意修改或终止这些进程。
mimikatz 的 sekurlsa::logonpasswords 指令用于从 Windows 操作系统的内存中提取明文密码、哈希值、PIN 码和 Kerberos 票据等凭据 ...
uac白名单挖掘
uac白名单挖掘UAC介绍用户帐户控制(User Account Control)是Windows Vista(及更高版本操作系统)中一组新的基础结构技术,可以帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统,同时也可以帮助组织部署更易于管理 的平台
使用UAC,应用程序和任务总是在非管理员帐户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改
一句话来说,就是分权限了,有些操作必须保证当前用户具有某个权限才能成功
查看令牌权限查看用户的令牌权限:
1whoami /priv
输出会列出当前用户的拥有的所有权限(Privileges),包括权限的名称和当前状态(启用或禁用)。
例如我去查看管理员权限(cmd窗口我用管理员模式打开的)
这是普通用户的权限:
普通用户是无法通过 API 直接获取或启用 SeDebugPrivilege 等高权限特权的。 只有是管理员账户的时候,才能通过API去提升自己的权限
一些权限的解释:
**SeDebugPrivilege**:允许调试和访问系统中的所有 ...
Windows消息钩子
Windows消息钩子API介绍SetWindowsHookEx 是 Windows API 中用于安装挂钩(Hook)的函数,它允许一个应用程序在特定事件发生时拦截系统消息或输入(例如键盘、鼠标输入),并对其进行处理。通常用于捕获、监控或修改应用程序中的消息流。
123456HHOOK SetWindowsHookEx( int idHook, // 挂钩类型 HOOKPROC lpfn, // 挂钩回调函数 HINSTANCE hMod, // 应用程序或DLL实例句柄 DWORD dwThreadId // 线程标识符);
参数解释:
idHook (挂钩类型): 表示要安装的挂钩类型,它决定了系统在什么事件发生时调用钩子函数。常见的挂钩类型有:
WH_KEYBOARD: 捕获键盘消息(不区分按键的目标窗口)。
WH_KEYBOARD_LL: 捕获低级别的全局键盘消息,可以用于记录按键等。
WH_MOUSE: 捕获鼠标消息。
WH_MOUSE_LL: 捕获低级别的全局鼠标消息。
WH_CALLWNDPROC: 监控发送给目标窗口的消息。 ...
驱动检测Shellcode注入项目
驱动检测Shellcode注入项目本项目在Win7 x64完美运行,如果发现运行不了,可能是偏移问题,自行在源码上更改即可。
项目地址: 0xcc12138/Shellcode_hunter: 一种能够实时监控是否有疑似Shellcode执行的软件 (github.com)
项目作用主要监测是否有疑似Shellcode注入后,启动CreateThread或者远程CreateRemoteThread执行注入的Shellcode代码
原理:注入Shellcode后,一般需要起线程去执行这个Shellcode,那么这时候我们通过设置一个创建线程回调函数PsSetCreateThreadNotifyRoutine,在线程开启,执行之前抢先收到消息
在线程创建例程里面,我们通过参数Pid可以知道是否是我们需要监控的进程,一旦确定,就Attach上该进程去遍历它的Vad树。
我们知道,VirtualAlloc出来的地址是Private属性,并且是要具有Excute(可执行属性的),因此我们去从Vad树遍历到区段,然后就可以进行判断疑似Shellcode的执行
比如本项目就是如果发现有疑 ...
免杀——VAD树
VAD树前面说的进程隐藏,模块隐藏
但是这个是骗不了例如PCHunter这种软件的
这是因为这种软件用了别的方法去遍历进程和模块
Vad树介绍 VAD(Virtual Address Descriptor)树是Windows操作系统用来管理进程的虚拟内存区域(memory regions)的一种数据结构。它以平衡二叉树(通常是自平衡的AVL树)的形式存在,存储了一个进程中所有的虚拟地址范围(内存区域)。这些虚拟地址区域包含了进程所使用的内存,比如模块加载的内存、堆、栈等。
为了隐藏进程,常见的技术就是断开活动进程链 ,虽然这种方法能够从用户态视角隐藏进程,但它并没有改变内存管理系统和其他内核结构中的信息,进程仍然在系统的其他地方可见。
每一个进程(EPROCESS)都有Vadroot结构,这保存着Vad树的根节点
用windbg可以自动解析Vad树
1!vad [addr]
关于内存的Private,Mapped属性我们可以看到,解析出来的属性里面,内存类别有Mapped,还有Private,只是什么东西?
在windows内存管理里面,只有两种属性,分别是 Private ...
免杀——线程进程隐藏
线程进程隐藏三环TEB/PEBx64下,每个线程都有一个TEB结构来存储线程的一些属性结构,gs:[0x30]寄存器在ring3指向TEB结构,
在0x60的偏移,有一个_PEB结构,PEB就是进程用来记录自己信息的一个结构
在PEB +0x18的位置有一个_PEB_LDR_DATA结构
就会发现有三个链表
链表是这个结构,可以通过这三个链表,遍历到所有模块
因此我们就可以在三环断链来隐藏模块
我们知道如果要枚举模块一般都是使 用 CreateToolhelp32Snapshot 拍摄快照,然后找到模块列表之后进行遍历,其实api也是通过找 _PEB_LDR_DATA 这个结构来获取程序有哪些模块,那么我们如果想隐藏某个dll,就可以通过修改这几 个双向链表的方法来进行隐藏
三环断链代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 ...
免杀——APC机制与注入
APC机制与注入APC机制:APC,全称为Asynchronous Procedure Call,即异步过程调用,是指函数在特定线程中被异步执行,在操作系统中,APC是一种并发机制
当使用 CreateThread 创建一个线程时,需要指定一个线程回调函数(入口函数),这是这个线程的主执行体。但是,APC是一个额外的机制,可以在不干扰该线程主任务的情况下,让该线程处理其他的异步操作。
通过APC,你可以在已经运行的线程中插入额外的操作,而不需要创建新的线程。线程会在某些合适的时刻处理APC请求,比如进入等待状态时。
用户模式下的 APC 需要线程主动进入等待状态或调用一些特定的函数才能触发其执行。这意味着线程必须进入某些特殊的状态才能执行 APC,比如调用以下这些函数时:
SleepEx
WaitForSingleObjectEx
WaitForMultipleObjectsEx
这些函数的特点是它们都有一个参数允许线程可被中断以执行 APC,即通过传递 TRUE 给它们的 “alertable” 参数。
如果线程一直在循环
在这种情况下,如果线程只是忙于执行一个循环任务,并且不 ...