查看设备对象IRP请求处理函数
查看驱动对象IRP请求处理函数最近在学Windows的文件过滤,其实也就是过滤驱动的那一套
想象一下一个场景就是,一个安全软件对文件的写入有文件过滤保护,攻击者想要逆向过滤的规则,那么应该如何做呢?
首先我们先要下载一个软件,叫DeviceTree
驱动开发辅助工具WinObj、DebugView、DeviceTree - 科创网
在 WinDbg 中使用以下命令访问 MajorFunction Table
1kd> dt nt!_DRIVER_OBJECT <驱动对象地址>
而这个驱动对象地址,就是在这个DeviceTree软件里面,可以看到右边的信息中有Driver Object,这个就是驱动对象地址
可以看到以下信息
123456789101112131415160: kd> dt nt!_DRIVER_OBJECT 0xfffffa801ae42e70 +0x000 Type : 0n4 +0x002 Size : 0n336 +0x008 DeviceObject : 0xff ...
数据库
数据库关系与表DB DBMS SQL
数据库(DB)、数据库管理系统(DBMS)、SQL,之间的关系
1.1 什么是数据库?
数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。
顾名思义:存储数据的仓库,数据的集合。实际上就是一堆文件。这些文件中存储了具有特定格式的数据。
1.2 什么是数据库管理系统?
数据库管理系统:DataBaseManagement,简称DBMS。
作用:专门管理数据库中的数据的,数据库管理系统可以对数据库当中的数据进行增删改查。
类型:层次型、网状型、关系u型(本课程主要学习)。
常见的数据库管理系统:MySQL,Oracle、MS SqlServer、DB2、sybase等…..
1.3 SQL - 结构化查询语言
程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。
本质:是一套标准。程序员只要学习的就是SQL语句包,这个SQL在mysql中可以使用,同时在Oracle也可以使用。
1.4 MB、DBMS、SQL之间的关系?
DBMS–执行 –> ...
C++新特性
C++新特性多嘴一句,vs中自动对齐代码:选中需要调整格式的内容(可用CTRL+A),然后再按Ctrl + K 和Ctrl + F 就好了
一:auto/decltype1. auto:自动类型推导auto关键字允许编译器自动推导变量的类型,特别是在初始化时,编译器可以根据右侧的表达式确定变量的类型。这在处理复杂类型时非常有用,比如模板、迭代器等。
优点
简化代码:尤其是在使用长或复杂类型时,不再需要手动写出类型。
增强可读性:通过减少冗长的类型声明,代码变得更加简洁明了。
避免错误:可以减少在手动写类型时出现的错误。
2.decltype:获取表达式的类型decltype关键字用于从表达式中获取类型。这对于需要获取某个变量或表达式的精确类型时非常有用。
特点
类型推导:decltype可以从表达式、变量、函数调用等推导出其类型。
与auto配合:decltype常与auto配合使用来解决复杂类型推导的问题。
精确性:decltype可以返回表达式的精确类型,包括引用类型或指针类型。
代码示例:1234567891011#include <iostream& ...
PPID的攻与防
PPID Spoofing(父进程欺骗)主要参考文章: 奇安信攻防社区-Parent Process ID (PPID) Spoofing
PPID Spoofing介绍PPID Spoofing(父进程ID欺骗)的原理是通过操控新进程的父进程ID,使其看起来是由另一个指定的进程创建的,而不是实际创建它的进程。这种技术可以用来隐藏恶意行为或混淆分析,避免安全软件的检测,因为某些安全工具可能通过监控父子进程关系来检测恶意软件。
PPID Spoofing 的操作方式: 在PPID欺骗中,通过使用扩展启动信息(STARTUPINFOEXA)结构,并修改其属性列表(ProcThreadAttributeList),可以在进程创建时指定一个自定义的父进程,而不是默认的创建进程。这通过在创建新进程时,将另一个合法进程的句柄传递给CreateProcess函数来实现。
PPID Spoofing实现代码先看一个代码:这个代码的主要功能是在一个指定的父进程下创建一个notepad子进程,通过CreateProcessA来实现,并使用扩展启动信息STARTUPINFOEXA来指定父进程。
12 ...
详细信息,自签名过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 文档、目标主机上的漏洞)最终组成一个我们熟悉的名词 —— 木马,最终送达到目标主机上,长期的控制它
Cobalt Strike安装及beacon上线参考这篇文章:
红队内网渗透神器–CobaltStrike安装教程-CSDN博客
下载下来以后是这个界面
首先我们要先运行下teams ...
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的执行
比如本项目就是如果发现有疑 ...