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 ...
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 文档、目标主机上的漏洞)最终组成一个我们熟悉的名词 —— 木马,最终送达到目标主机上,长期的控制它
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的执行
比如本项目就是如果发现有疑 ...
免杀——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 ...