自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 phpjiami加密原理详解及解密

使用Php-Parser对phpjiami加密原理进行详细分析,以及如何解密。

2022-11-13 03:03:03 2119 2

原创 yara规则学习与使用

最近需要对分析的病毒提供一定的检测能力。看了一圈发现yara规则比较满足我的需求。本文包括: 1. yara规则的简单介绍 2. yara规则的编写(字符串定义和条件定义)(基本就是官网翻译了) 3. 如何在python语言中使用yara(简单使用)...

2022-06-20 22:53:35 5889 1

原创 二进制静态分析---库函数识别

这里写自定义目录标题一、问题二、FLIRT(ida自带)三、lscan(没成功)四、Rizzo(需要有对比文件)五、finger(好用)六、lumina(ida>7.2,有一定效果)总结一、问题在静态编译的程序中会包含很多库函数,这些库函数不是我们分析代码的关键,但是在分析的时候可能会分析到库函数中降低我们分析的效率。如果能够正确高效的识别这些库函数,就能加快我们分析的效率。现有的方法可以分为三大类(我自己分的不一定准确)通过对比签名文件(sig)的机器码序列来识别函数。如FLIRT、lsc

2022-04-24 19:17:18 4046

原创 动手实验 CVE-2012-0003 Microsoft Windows Media Player winmm.dll MIDI文件堆溢出(坑多)

动手实践CVE-2012-0003堆溢出,坑很多。尽力寻找堆块大小发生改变的底层原理。

2022-02-19 15:31:15 3416

原创 动手实验 CVE-2010-3333 Microsoft RTF栈溢出漏洞

手把手分析CVE-2010-3333 RTF栈溢出漏洞,同时分析了msf如何生成通用性的exp

2022-02-13 18:21:17 3589

原创 动手实验 CVE-2010-2883 Adobe Reader TTF字体SING表栈溢出漏洞

文章目录1.漏洞环境2.定位漏洞3.动态调试4.分析msf生成脚本4.1make_ttf4.2 make_js5.实现自己的shellcode绕过DEP5.1 利用ZwSetInformationProcess和SetProcessDEPPolicy关闭DEP(win xp sp3不能用)5.2 VirtualProtect绕过DEP5.3VirtualAlloc绕过DEP6.总结本文包括简单的漏洞分析和比较详细的exp动态调试,以及自己动手写exp绕过DEP的实践1.漏洞环境环境备注

2022-02-08 19:11:06 2600

原创 2021绿城杯 RE WP

逆向(100分题)变异RC4,关键点是密钥盒S的生成过程被魔改了。RC4原理参考之前的博客基本流程1.初始循环填充key,key=“tallmewhy”2.计算密钥盒S,但是不是标准的RC4算法。可以通过dump的方法将密钥和提取3.ebp+ecx+var_534中是密文由于不想看魔改的S盒生成算法,所以在S盒生成完成的地方下断点,dump S盒填充就可以了。exp#include<stdio.h>#include<string.h>struct rc4_

2021-09-29 22:31:18 3254

原创 2021长城杯 RE

Just_cmp-re猜测就是在init_array的地方修改了strcmpenc = [0x00,0x00,0x00,0x00,0x00,0x37,0x07,0x0A,0x37,0x0A,0x08,0x0A,0x06,0x06,0x0B,0x38,0x07,0x0A,0x3B,0x08,0x38,0x0E,0x0F,0x3B,0x3A,0x0A,0x0B,0x06,0x09,0x07,0x3B,0x37,0x0D,0x0F,0x07,0x38,0x0F,0x00,0x00,0x00,0x00,0

2021-09-20 16:27:24 825

原创 2021 羊城杯 EasyVM

正好学习一下vm的题目怎么分析1.简单分析主函数1.初始化标准输入输出和错误2.设置VMcontext3.xxtea自解密dispatch代码4.进入dispatch执行2.解决smc问题在自解密结束位置下断点,并将内容dump下来.dump脚本start = 0x80487A8for idx in range(0x1000): if idx%16 == 0: print("") print(hex(get_wide_byte(start+idx)),end=',

2021-09-14 13:57:16 747

原创 2021羊城杯CTF wp

1.签到比较坑的点是《一起来看***》是17,猜了很久才猜出来28-08-30-07-04-20-02-17-23-01-12-19得到flag SangFor{d93b7da38d89c19f481e710ef1b3558b}2.BabyRop一万年没做pwn了,为了骗点分还是看了一下。fgets存在栈溢出没有cannary保护存在system函数(也可以用func1),存在/cin/sh字符串所以可以直接getshell。坑点是不能使用/cin/sh和/sh要执行system(“sh

2021-09-13 10:18:23 2858 3

原创 操作系统真象还原 --- 10.输入输出系统?(同步机制---锁)

上一节的最后报错了!!!上一章最后程序出现报错的原因是对临界区资源(光标寄存器)的争夺导致的。如何解决这个问题?信号量机制、锁机制1.重要概念**公共资源:**公共内存、公共文件、公共硬件等,总之是被所有任务共享的一套资源**临界区代码:**程序中那些访问公共资源的指令代码**互斥:**公共资源只能被一个任务独享,临界区代码只能被一个任务使用。**竞争条件:**多个任务以非互斥的方式同时进入临界区,对公共资源的访问是以竞争方式并行进行的。2.信号量与锁机制信号量解决竞争条件的方法,信号量

2021-08-03 00:37:03 216

原创 操作系统真象还原 --- 9. 线程

还是先来问自己几个问题什么是线程?什么是进程?用什么管理线程/进程?如何进程线程调度(切换)?这个问题是我最感兴趣的简单的问题就简单回答什么是线程? 线程是一套机制,此机制可以为一般的代码创造它所依赖的上下文环境,从而让代码块具有独立性,能够单独获得处理器资源。什么是进程? 进程是线程+资源用什么标识进程? PCB:Process Control Block,程序控制块,用来记录此进程的相关信息,比如进程状态、PID、优先级等1.线程处理相关数据结构中断栈:中断发生时用来保存程序的上

2021-07-26 22:03:51 324 2

原创 操作系统真象还原 --- 8.内存管理系统

这一章主要包括:makefile语法,方便后面编译文件ASSERT断言Bitmap位图实现内存管理系统是实现(最复杂的部分)一、makefile基本语法目标文件是指此规则下想要生成的文件,可以是.o结尾的目标文件,也可以是可执行文件,也可以是伪目标依赖文件是指要生成此规则中的目标文件,需要哪些文件命令是指要执行的动作,shell命令。每一条命令单独占用一行目标文件:依赖文件[Tab]命令文件的3个时间atime:access time,每次文件被访问都会更新ctime

2021-07-21 19:37:43 356 1

原创 操作系统真象还原 --- 7.中断

先给自己提几个问题。中断是什么?中断就是发生了某些事情,计算机暂停正在执行的程序,去执行处理这件事情为什么需要中断?因为发生了更紧急需要处理的事情,所以需要中断暂停。相对前面实现的操作系统最终会到一个while循环中,现在需要实现中断突破while循环。所以之后的系统就是由中断驱动的。如何实现中断?后面再看看怎么实现。一、中断分类中断从触发的地方分为:外部中断和内部中断。外部中断:cpu外部的中断,一般为硬件产生,也称硬件中断内部中断:软中断和异常。软中断:软件主动发起的中断。int

2021-07-21 16:17:57 339

原创 操作系统真象还原 --- 6.完善内核(内联汇编)

虽然是写完善内核,但是主要内容是内联汇编的介绍为后面做铺垫一、内联汇编AT&T1.汇编风格寄存器:寄存器前有前缀%操作数顺序:源操作数在左,目的操作数在右操作数大小:b表示8位,w表示16位,l表示32位。如movl %eax,var立即数:有前缀$,$6表示立即数6远跳转:ljmp segment:segment:segment:offset远调用:lcall segment:segment:segment:offset远返回:lret $n2.内存寻址格式:segreg

2021-07-17 21:10:14 228

原创 操作系统真象还原 --- 5.保护模式进阶,向内核迈进

一、获取物理内存容量利用BIOS中断的0x15实现获取物理内存容量EAX=0xE820 遍历主机上全部内存AX=0xE801 分别检测低15MB和16MB~4GB的内存,最大支持4GBAH=0x88 最多检测出64MB内存,实际内存超过此容量也返回64MB二、启用内存分页机制分页机制寻址原理二级页表模式:比如虚拟地址:0x1234567取虚拟地址高10位,0x4*4+页目录表(PDE)得到页表的物理地址取虚拟地址中间10位,0x234*4+页表(PTE)得到页地址取虚拟地址最后12

2021-07-17 18:10:30 391 1

原创 操作系统真象还原 --- 4.保护模式入门

一、实模式的缺点安全问题实模式下操作系统很应用程序都是特权级用户程序引用地址为真实物理地址用户程序可以修改段机制,任意读和写内容使用问题访问超过64KB内存需要切换段基址一次只能运行一个程序共20条地址先,最大可用内存为1MB二、段描述符段描述符:大小为64bit,描述了内存段的起始基址、范围、安全属性、是否被访问、是否被加载等属性段基址:32位,表示段的起始地址,一般为全0段界限:20位,根据G位表示段的大小。G位为0,表示段界限单位为字节最大表示2的20次方乘1字节=1

2021-07-07 20:36:59 565

原创 操作系统真象还原 --- 3.完善MBR

一、io端口通信系统通过in和out指令和各种硬件端口进行通信。in指令从端口中读取数据,dx用于设置端口号in al,dx;al=端口(dx)in ax,dx;ax=端口(dx)out指令用于往端口写数据out dx,al;out dx,ax;out 立即数,alout 立即数,ax二、显存地址分布可以参考第二章的内容可以知道显存的分布**文本显示模式:**每个字符用两个字节表示文本内容和显示方式。通过在0xB800处写入ASCII码和显示方式能够直接在显示器上显示字符

2021-07-07 15:27:43 439

原创 操作系统真象还原 --- 2.编写MBR主引导记录,让我们开始掌权

一、实模式下的内存布局一直到第4章之前程序都是运行在实模式下,所以需要先了解实模式下的内存布局。实模式下只会使用cpu的20条地址线,所以只能访问和使用到1MB的地址空间。用一张图表示一、第一棒 BIOS主机通电后第一个运行的软件就是BIOS,由主板加载BIOS全称Base Input & Output System,即基本输入输出系统。bios功能:检查内存、显卡等外设信息,初始化硬件,在0x000~0x3ff建立数据结构,中断向量表IVT并填写中断例程。最后一步校验启动盘中位于0盘0

2021-07-07 10:09:07 274

原创 操作系统真象还原 --- 1.部署工作环境

最近稍微空闲了一点点,想把以前搞操作系统的梦实现一下,所以按照《操作系统真象还原》进行学习。1.配置环境我使用的是Vmware虚拟机和deepin系统,为了减少不必要的麻烦建议使用和作者一样的软件版本bochs2.6.2(试过直接apt安装但是bochsrc.disk中的一些配置已经发生改变,需要自己查阅资料进行改进)下载&解压下载 2.6.2版本https://telkomuniversity.dl.sourceforge.net/project/bochs/bochs/2.6.2/bo

2021-07-06 23:40:55 404 1

原创 office病毒分析从0到1

一、office文件格式office文件格式根据版本可以分为Office2007之前的版本和Office2007之后的版本。Office2007之前的版本为OLE复合格式:doc,dot,xls,xlt,pot,pptOffice2007之后的版本为OpenXML格式:docx,docm,dotx,xlsx,xlsm,xltx,potx1.OLE复合格式(Object Linking and Embedding Data Structures)复合文档不仅包含文本,而且包括图形、电子数据表格、声音

2021-06-28 13:48:00 2057 1

原创 逆向分析基础 --- 花指令实现及清除

一、基本概念花指令:目的是干扰ida和od等软件对程序的静态分析。使这些软件无法正常反汇编出原始代码。常用的两类反汇编算法:1.线性扫描算法:逐行反汇编(无法将数据和内容进行区分)2.递归行进算法:按照代码可能的执行顺序进行反汇编程序。简单的花指令 0xe8是跳转指令,可以对线性扫描算法进行干扰,但是递归扫描算法可以正常分析。两个跳转一个指向无效数据,一个指向正常数据来干扰递归扫描算法。二、花指令实现这里的实验基础代码是参考安全客上一个师傅代码进行的//源码#include<s

2021-06-15 17:33:08 11397 4

原创 恶意代码分析实战 --- 第十二章 隐藏的恶意代码启动

一、常用的隐藏技术启动器进程注入进程替换Hook注入DetoursAPC注入二、Lab12-11.行为分析执行之后的效果是每隔一段时间会弹窗。查看process momitor。可以发现psapi.dll被createFileMapping进内存,可能是修改了CreateFileMapping.2.Lab12-1.exe主要流程分析1.初始化:通过LoadLibrary和GetProcAddress来获得EnumProcessModules、GetModuleBaseNam

2021-06-09 16:33:44 621

原创 恶意代码分析实战 --- 第十一章 恶意代码行为

一、 Lab11-01行为分析在当前目录释放文件msgina32.dll并且修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL为释放出来的msgina32.dll,对登录进行劫持。ida pro7.5很多unicode字符串无法识别出来。这里用了SysinternalsSuite中的strings工具来搜索字符串。静态分析对Wlx开头的所有函数进行分析。大部分的函数如下:

2021-06-06 18:36:23 1242 1

原创 初入门径 --- 护网钓鱼样本分析

最近半个月都在学《恶意代码分析实战》,想拿真实的恶意软件进行分析一下。正好朋友发了一个过来。(应该是护网的钓鱼文件)0x01 文件分析总共包括三个文件:2021年机关员工(子女)名单.exe、name1.jpg、name2.jpg2021年机关员工(子女)名单.exe:程序是golang编译的,分析起来有点困难。所以没有进行分析,只是看了一下会有什么行为。name1.jpg为exename2.jpg为dll导出了InitBugReport函数,且该函数存在异或解密shellcode的行为。0

2021-06-02 20:12:13 565

原创 恶意代码分析实战 --- 第十章 使用Windbg调试内核

一、安装内核调试1.配置虚拟机编辑C:\boot.ini ,该文件为隐藏文件,将文件按下面方式进行修改/debug表示开启内核调试/debugport=COM1表示使用哪个端口来连接调试系统与被调试系统/baudrate=115200表示指定串口数据传输速率。[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(

2021-05-31 21:43:47 928

原创 恶意代码分析实战 --- 第九章 OllyDbg

Lab 9-1查看程序的导入了Service相关、注册表相关、文件操作相关、网络连接相关的API,还有ShellExecute函数可能是存在后门的命令执行。字符串主要是cmd.exe和一个注册表SOFTWARE\Microsoft \XPS比较可疑主流程分析1.如果运行程序是否有参数。无参数查询注册表”SOFTWARE\Microsoft \XPS\Configure“.查询失败删除文件2,查看最后一个参数是否为abcd,再根据参数-in -re -c -cc执行相应命令打开注册表LS

2021-05-24 13:32:19 924

原创 恶意代码分析实战 --- 第七章分析恶意windows程序

Lab7-1程序分析查看导入表,存在服务相关API,静态分析需要关注服务相关代码。通过存在互斥体的创建。最后两个WININET的api会打开URL。主函数执行 StartServiceCtrlDispatcher设置"Malservice"对应的回调函数相关APIBOOL WINAPI StartServiceCtrlDispatcher( _In_ const SERVICE_TABLE_ENTRY * lpServiceTable);结构体:服务名|回调函数typedef st

2021-05-21 23:44:02 697 1

原创 恶意代码分析实战 --- 第三章 动态分析基础技术

Lab 3-11.找出恶意代码的导入函数与字符串列表导入函数只有一个ExitProcess,可能被加壳了。字符串存在两个注册表,1个url,还有1个PE文件名2.这个恶意代码在主机上的感染迹象特征是什么?3.这个恶意代码是否存在一些有用的网络特征码?如果存在,它们是什么?提前启动process monitor(设置过滤WriteFile、RegSetValue)、process expore、Fakenet(用于监控网络)写了一个文件到C:\WINDOWS\System32\vmx32to6

2021-05-16 20:44:41 771

原创 恶意代码分析实战 --- 第一章 静态分析基础技术

记录一下恶意代码分析实战的课后习题。Lab1-11.将文件上传至http://www.virustotal.com进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?能够看到很多杀软都报毒了,但是好像看不出报的是什么类型的病毒。2.这些文件是什么时候编译的?Lab01-01.exe创建时间:2010-12-20/00:16:19Lab01-01.dll创建时间:2010-12-20/00:16:38应该是同时创建的.4.是否有导入函数显示出这个恶意代码是做什么的?如果是,是哪些导入

2021-05-15 22:24:58 622

原创 2021红帽杯RE ezRev和file_store题解

比赛的时候没做出来,而且坑点也挺多的,赛后复现了一下0x01 ezRev比赛的时候更新了题目,原本题目没有字符串提示,分析起来难度较大。题目难点是设置了很多比较坑的比较点需要patch绕过。1.流程分析1.输入一个16字节的flag(需要patch长度比较)2.rand()生成a和b3.比较a的b次方和b的a次方是否相等,且a>b。应该只有一个解就是a=4,b=2。(需要patch rand返回值为4,2)4.计算xtea的key,可以将sleep nop掉,因为前面步骤2,3,

2021-05-12 16:14:14 881 4

原创 逆向分析中的密码学---RSA

0x01 简介RSA算法是公钥加密算法,即可用于数据加密也可以用于数字签名。RSA基于一个简单的数论事实,两个大素数相乘十分容易,将其进行因式分解确实困难的。这篇文章不涉及RSA算法的原理,只涉及RSA算法的流程0x02 算法流程流程时挺简单的选取两个大素数p和q,为了获得最高安全性,设两数长度一样计算n=pq,n称为模计算欧拉函数:φ\varphiφ(n)=(p-1)(q-1)选取加密密钥e,其与φ\varphiφ(n)互素。如果选择的e值合适,RSA加解密的速度会加快。e的常用值为3、1

2021-04-21 23:32:10 512

原创 逆向分析中的密码学---AES

https://github.com/matt-wu/AES

2021-04-20 23:59:06 1997

原创 逆向分析中的密码学---tea

0x01 简介TEA全称Tiny Encrypt Algorithm。在CTF逆向分析中经常会出现Tea或者魔改了DELTA的TEA算法。0x02 算法原理明文长度分组为64位(8字节),密钥长度为128位(16字节),明文和密钥进入32轮循环,得到最后的64位密文。其中magic number DELTA是由黄金分割点得到。算法比较简单源码如下#include<stdio.h>#define DELTA 0x9e3779b9void tea_encrypt(unsigned i

2021-04-13 14:23:16 3075

原创 逆向分析中的密码学---RC4

0x01 简介RC4是对称加密算法,通过密钥key和S盒生成密钥流,明文逐字节异或S盒,同时S盒也会发生改变。所以加密与解密使用了相同的函数和密钥K。RC4加密的强度主要来源于密钥的安全性,如果密钥泄露,则能直接解密出明文。0x02 RC4算法分析S盒初始化第一个256循环:初始化为0-255第二个256循环:根据密钥K,交换密钥盒Sfor i=0 to 255 do S[i]=ij=0for i=0 to 255 do j = (j+S[i] + key[i mod keylength

2021-04-12 23:46:55 2036

原创 逆向分析中的密码学---SHA1

0x01 简介SHA-1是安全哈希函数,允许输入最大2^64-1位,产生160位(20字节)的哈希值。0x02算法简介初始化过程和md5一样先进行数据填充再附加64位的长度信息1.数据填充对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。填充方法:在消息后面进行填充,填充第一位为1,其余为0。2、添加消息长度在第一步结果之后再填充上原消息的长度,可用来进行的存储长度为64位。如果消息长度大于2^64,则只

2021-04-12 21:16:47 1521

原创 逆向分析中的密码学---MD5

0x01 简介MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value)。可以用于确保信息传输完整一致。数据库中密码的保存(md5(pass,salt)方式)。0x02 算法流程1.数据填充对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。填充方法:在消息后面进行填充,填充第一位为1,其余

2021-04-11 19:28:24 1400

原创 fg_kaslr保护下的kernel pwn

0x01 kaslr类似ASLR,内核基址地址加载随机化。一般绕过思路:通过泄露内核地址,通过偏移计算出内核基址。(kernel_base=leak_addr - offset)再根据内核基址和其他函数的偏移得到目标函数地址(如commit_creds等)0x02 fg_kaslr来自官方[PATCH v3 00/10] Function Granular KASLR 的描述简单的说就是更细粒度的内核地址空间随机化,按照函数级别的细粒度来重排内核代码。所以当再泄露内核地址时,无法通过le

2021-03-27 23:40:36 905

原创 linux kernel pwn -- 2018qwb_core

0x01 查看题目1.查看start.sh启动脚本,开启了kaslr,但是没有开smep和smap,这里有个小坑-m 64M会报错内存不够,可以改成-m 1024Mqemu-system-x86_64 \-m 64M \-kernel ./bzImage \-initrd ./core.cpio \-append "root=/dev/ram rw console=ttyS0 oops=panic panic=1 quiet kaslr" \-s \-netdev user,id=t0,

2021-03-22 20:43:47 233

原创 Linux kernel pwn --- CSAW2015 StringIPC

0x01查看题目1.launch.sh。qemu-system-x86_64 \ -m 512 \ -kernel ./bzImage \ -initrd ./rootfs.cpio \ -append "console=ttyS0 root=/dev/ram rdinit=/sbin/init" \ -nographic \ -s \ -netdev user,id=t0, -device e1000,netdev=t0,id=nic0 \

2021-03-21 13:20:06 288

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除