前言 Shellcode 是一种用于计算机安全领域的代码,它通常用于软件漏洞利用的载荷。这种代码被称为 "shellcode" 是因为它经常用来启动命令终端,从而允许攻击者控制受害计算机。然而,任何执行类似任务的代码片段都可以被称为 shellcode。Shellcode 通常以机器码的形式编写,因此需要对硬编码有所了解。 x86汇编 寄存器 现代(即 386 及更高版本)x86处理器具有8个32
学习了 boofuzz 的基本概念之后,我产生了一些疑问,本文围绕着这些问题对源码进行分析。 Request的生成策略 问题描述 boofuzz中的测试用例为Request,即数据包。数据包中包含很多字段,boofuzz中称为Primitive(原语),每个Primitive都有自己的生成策略。如果一个Request中包含多个不同的Primitive,它们的生成策略各不相同,能生成的数量也不同。
什么是shellcode 一段位置无关的代码(不依赖外部环境) 也就是遵循如下规则 不能使用全局变量 不能使用常量字符串 不能直接调用windowsAPI 如何实现一个通用的shellcode 我们先来看这么一段代码 #include <Windows.h> int main(){ MessageBox(0, 0, 0, 0); } 转到反汇编 由于ALSR的存在 每次
此恶意程序图标伪装成二维码,让受害者以为这是图片,从而双击打开 程序修改了注册表, 用于隐藏和持久化,RegOpenKeyW 多次被调用,目标注册表键包括 HKEY_USERS、HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 通过动态调试,修改的注册表为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Curre
一.基础概念 LLVM最初是Low Level Virtual Machine的缩写,定位是一个比较底层的虚拟机。但是LLVM本身并不是一个完整的编译器,LLVM是一个编译器基础架构(infrastructure,把很多编译器需要的功能以可调用的模块形式实现出来并包装成库,供其他编译器实现者可以根据自己的需要选择使用或者扩展。主要聚焦于编译器后端功能,如代码生成、代码优化、JIT等。 目前常见的编
前置知识和基础 socket套接字详解(TCP与UDP) 套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 初识IP: IP有源IP和目的IP之分,源ip就像是一个大范围来确定你属于哪一个区域,而目的ip也就是用来确认你的具体位置的 端口号: 端口
前言 AsyncRAT是远控木马的一种,旨在秘密渗透系统并让攻击者远程控制受感染的设备。这是俩个类似的样本的感染过程分析。 样本一 样本一是一个txt文件,实际上是经过混淆的VBS脚本 它先是定义了一些变量,存储代码中使用的文本部分。 紧接着下载了一个jpg文件并将其保存为zip,掩盖自身。 对代码进行解混淆: Set FileSystemObject = CreateObject("Scr
前言 DarkComet 是一种远程访问木马(Remote Access Trojan, RAT)。该恶意软件以隐蔽方式运行,主要用于窃取受害者的敏感信息,包括系统数据、用户凭据、用户名、密码和其他个人数据。这些信息会被传输到攻击者指定的目标地址,进一步用于恶意目的。 作为一种功能强大的后门工具,Backdoor.DarkComet 不仅可以窃取数据,还允许攻击者在受感染设备上安装其他恶意软件,甚
通过蜀道山的一道堆题来学习一下Tcache Stashing Unlink Attacke。 Tcache Stashing Unlink Attacke虽然有Unlink,但是感觉和unlink的利用方法有很大不同,唯一相似的地方可能就是脱链绕过检查。 标签:libc2.31 uaf calloc Tcache Stashing Unlink Attacke 保护: Arch:
Largebin_attack 最近填一下以前的陈年老坑 这篇文章我主要分享的是2.35版本下的Large_bin_attack how2heap中的源码 #include<stdio.h> #include<stdlib.h> #include<assert.h> /* A revisit to large bin attack for after gl
Pwn堆学习笔记-unlink 写在前面: 很早之前写到的题目,很久都没想明白,今天一下想明白了,跟各位师傅分享一下 什么是unlink 我们先来看unlink的源码 #define unlink(AV, P, BK, FD) { FD = P->fd; BK = P->bk; if (__bui
首先,让我们来介绍两个概念:main arena与no main arena。这两个术语翻译过来,分别对应的是“主分配区”和“非主分配区”。 那么,主分配区和非主分配区各自具有哪些特点呢? 首先,需要明确的是,系统中仅存在一个主分配区。在进行内存分配时,我们必须对主分配区进行加锁操作,以确保内存分配的安全性,待分配结束后,再解除锁。 主分配区可以通过sbrk和mmap两种方式向操作系统请求虚拟内存
免杀基础-IAT隐藏 导入表包含了导入的DLL和使用的函数 其中如Kernel32.dll下的CreateRemoteThread VirtualAllocEx等函数被杀软认为是高度可疑的 我们可以通过导入表隐藏来减小被判断为恶意软件的几率 动态调用 使用Loadlibrary GetProcAddress来动态加载函数 pVirtualAllocEx myVirtualAllocEx = (pV
PE文件解析 什么是PE文件 Portable Executable文件 是一种可移植可执行文件格式 是windows中 exe(应用程序) dll(动态链接库) sys(驱动)等二进制文件的标准文件格式 PE Struct 通过010editor打开一个exe文件 使用exe模板 可以看见PE文件主要由 Dos头 Dos存根 Nt头 数据目录 节表数据 组成 Dos头 MZ头部 这是为了兼容D
调试驱动程序 windbg下载地址 https://learn.microsoft.com/zh-cn/windows-hardware/drivers/debugger/ 虚拟机里开启远程调试 bcdedit /debug on 重启后添加配置 bcdedit /dbgsettings net hostip:调试机ip port:55555 key:1.1.1.1 使用windbg进行