加壳主程序判断文件是否为PE文件
根据文件开始两个字节是否为”MZ”来判断文件否为DOS文件:
12345dos_header = (PIMAGE_DOS_HEADER)file_image_base;if (dos_header->e_magic != IMAGE_DOS_SIGNATURE) { WARNF("错误!目标文件DOS头校验失败!"); return FALSE;}
根据PE header中的Signature是否为”PE”来判断DOS文件是否为PE文件:
12345nt_header = (PIMAGE_NT_HEADERS32)((DWORD)dos_header+dos_header->e_lfanew);if (nt_header->Signature != IMAGE_NT_SIGNATURE) { WARNF("错误!目标文件PE头校验失败!"); return FALSE;}
如果PE文件只有一个区段,说明PE文件加壳来:
...
晁盖等八人抢劫生辰纲案大一时写的一篇论文,感觉挺有意思,今天整理博客,一并上传。
关键词:刑事案件 黑社会组织 抢劫 有持续的社会危害
基本案情晁盖是山东郓城县东溪村人,乃东溪村保正,本乡财主。吴用,山东菏泽市郓城县东溪村人。刘唐,东潞州人氏。刘唐为劫取生辰纲一事,夜走郓城县往投晁盖,途中酒后醉卧灵官庙,为巡查的县都头雷横抓获并带往东溪村晁盖庄,晁盖得知详由,并开始着手领导组织劫取生辰纲。晁盖吴用自幼结交,晁盖因吴用聪明过人便教唆其出谋策划劫取的全部过程,吴用欣然同意。公孙胜,蓟州人氏。其通过某些非法途径获知生辰纲一事,便投奔晁盖以期望伙同一起抢劫生辰纲。阮小二,阮小五,阮小七梁山泊旁边石碣村人。白胜,是黄泥冈东十里路安乐村闲汉。吴用召集阮氏三兄弟和白胜一起参与了此次抢劫案。杨志,武举出身,曾任殿帅府制使,因失陷花石纲丢官,后为梁中书赏识,派其护送此次生辰纲。
案发当日,天气较热,杨志因有一定的江湖经验,指导黄泥岗乃是非之地不宜久留。所以在同行护送生辰纲的其余几人想要在黄泥岗停歇一会时便催使他们不要歇息,这也导致了同行护送的其他人对杨志心存不满。当护送一行人基本不想在继续护送时,白胜 ...
一类动词 二类动词 三类动词日语的动词都是以う段假名结尾的,有う、く、す、つ、ぬ、む、る、ぐ、ぶ。
一类动词(五段动词)
不以る结尾的动词就是一类动词。
如:
買(か)う、書(か)く、話(はな)す、立(た)つ、死(し)ぬ、読(よ)む、泳(およ)ぐ、呼(よ)ぶ。
以る结尾的动词,る前一个假名在あ段、お段。
如:
終(お)わる、折(お)る、祈(いの)る。
二类动词(一段动词)以る结尾的动词,る前的假名在い段、え段。
如:
起(お)きる、寝(ね)る。
日语中有26个动词,满足二类动词特点,但是为一类动词,它们是:
帰(かえ)る
切(き)る
減(へ)る
要(い)る
知(し)る
走(はし)る 跑,行驶
入(はい)る
返(かえ)る
滑(すべ)る
参(まい)る “来,去”的谦辞
混(ま)じる 夹杂
握(にぎ)る
煎(い)る 煎、炒
練(ね)る 推敲
散(ち)る 凋谢
照(て)る 照耀
蹴(け)る 踢
焦(あせ)る 着急
限(がき)る 限于
湿(しめ)る 潮湿
茂 ...
指令替换技巧 from 《加密与解密》
功能
指令
机器码
指令长度(byte)
替换1字节
nop
90
1
替换2字节
nopnop
9090
11
替换2字节
mov edi,edi
8B FF
2
替换2字节
push eaxpop eax
5058
11
替换2字节
inc eaxdec eax
4048
11
替换2字节
jmp xx
eb00
2
寄存器清零
mov eax,0x00000000
B8 00 00 00 00
5
寄存器清零
push 0pop eax
6A 0058
21
寄存器清零
sub eax,eax/xor eax,eax
2B C0/33 C0
2
测试寄存器的值是否为0
cmp eax,0x00000000je label
83 F8 0074xx/0F84xxxxxxxx
32/6
测试寄存器的值是否为0
or eax,eax/test eax,eaxje label
0B C0/85 C074xx/0F84xxxxxxxx
22/6
置寄存器为0xFFFFFFFF
mov eax ...
afl-fuzz.c main函数简单流程(关键步骤省略)预处理
打印afl程序信息;
1SAYF(cCYA "afl-fuzz " cBRI VERSION cRST " by <lcamtuf@google.com>\n");
检查文件是否存在;
1doc_path = access(DOC_PATH, F_OK) ? "docs" : DOC_PATH;
设置一个种子,方便后续随机量的设置;
12gettimeofday(&tv, &tz);srandom(tv.tv_sec ^ tv.tv_usec ^ getpid());
根据命令行初始化并检查一些参数;
i:输入语料文件夹,对应变量in_dir;
o:fuzz输出文件夹,对应变量out_dir;
M,S:多线程模式下的Master和Server,Master会采取强制确定性变异,然后进行随进行变异,而Server会采取dumb mode进行fuzz,即不进行确定性变异;
f:用来进行fuzz的文件,对应变量out_ ...
afl-as.c粗析查看main函数,关键的就一句:
1if (!just_version) add_instrumentation();
即在汇编文件中添加插桩代码。
该函数中关键部分:
12345678910if (!pass_thru && !skip_intel && !skip_app && !skip_csect && instr_ok && instrument_next && line[0] == '\t' && isalpha(line[1])) { fprintf(outf, use_64bit ? trampoline_fmt_64 : trampoline_fmt_32, R(MAP_SIZE)); instrument_next = 0; ins_lines++;}
即通过汇编判断当前是不是一个分支语句或者函数,然后根据环境是x86还是x86-64添加汇编代码trampoline ...
afl-fuzz.c细节分析之主循环分析cull_queue阶段afl的dry run环节结束后就会进入cull_queue():
1cull_queue();
cull_queue函数分析该函数用于精简队列。
若处于dumb模式或者没有发现更优的样例就返回:
1if (dumb_mode || !score_changed) return;
将标记位score_changed改为0:
1score_changed = 0;
设置temp_v数组中的值为0xff:
1memset(temp_v, 255, MAP_SIZE >> 3);
设置queued_favored和pending_favored为0:
12queued_favored = 0;pending_favored = 0;
遍历queue,将所有样例的favored设置为0:
123456q = queue;while (q) { q->favored = 0; q = q->next;}
若对某条分支信息,top_rated[i]存在(存在favorable ...
afl-fuzz.c细节分析之perform_dry_run函数分析123456789/*直接运行所有的初始testcase来确保程序按照预期运行,这个操作只会进行一次。 */static void perform_dry_run(char** argv){ ...... while(q){ ...... }}
取队列,并设置cal_failures为0:
12struct queue_entry* q = queue;u32 cal_failures = 0;
读取环境变量AFL_SKIP_CRASHES为skip_crashes:
1u8* skip_crashes = getenv("AFL_SKIP_CRASHES");
然后是进入队列的循环:
123while(q){ ......}
循环内容如下:
打开当前testcase,并判断是否可读:
123456789fd = open(q->fname, O_RDONLY); //tes ...
APT分析及TTPs提取
转自project #,写的很不错,做个笔记(抄一下加深印象)。
攻击事件这里专指网络空间安全领域的攻击事件,即在未经授权情况下对计算机系统或计算机资源进行访问、使用、更改、破坏的活动。 根据事件的烈度以及影响范围,可分为以下几类:
常规攻击;
常规攻击一般呈线性,时间复杂度低,杂音少,可直接推出攻击目的。如:非定向钓鱼,端口,服务扫描,SQL注入,拒绝服务攻击,会话劫持,中间人攻击,凭证重放等。这类事件影响小,危害可控且可在短时间内排查修复。
Botnet;
僵尸网络特点是大规模攻击,并且涉及到RAT。如:Neucurs,Gafgyt,Mirai,僵尸网络上的垃圾邮件,Ddos等。
恶意软件;
恶意软件一般指勒索,挖矿以及病毒木马。涉及钱包,矿池;目的不同,且包含RAT;不同的入口,也会出现标志性的工具和利用。如:WannaCry,Bad Rabbit,大量MiktoTik路由器被感染进行恶意挖矿等。
APT
APT攻击时间复杂度高,多个行为,多个身份,使用的软件有loader,Downloader,RAT,Malware等。知名APT组 ...
CVE-2010-2883分析漏洞简述
漏洞成因:CoolType.dll库对SING表解析时调用了strcat函数,未对uniqueName字段的字符串长度进行检查,将其直接复制到了栈空间,导致了栈溢出。
影响版本:Adobe Reader 9.3.4
分析环境:windows xp sp3 简体中文
漏洞溯源漏洞触发操作如下:
123456.text:0803DD9F add eax, 10h ; get uniqueName addr.text:0803DDA2 push eax ; char *.text:0803DDA3 lea eax, [ebp+108h+var_108] ; get dst addr.text:0803DDA6 push eax ; char *.text:0803DDA7 mov [ebp ...