- 博客(100)
- 资源 (6)
- 收藏
- 关注
原创 shellcode 之 JMP ESP 与 JMP EBX
堆栈溢出在我们exploit时常用到,利用其一般方式是:JMP ESP 与 JMP EBX; 昨天有一“同学”问我关于JMP EBX详细的问题,所以在此介绍一下:1 JMP ESP函数调用后的堆栈结构: L L -> child program of Local variable L -> 一般情况下此处保存的ebp R -> EIP for ret
2008-06-30 23:49:00 3528
原创 线程调度的部分资料
PART 1: Kernel Object//每一位表示对应这个特权级的队列中是否有线程(主要在KiSwapThread用,详细代码见PART3)ULONG KiReadySummary = 0 - Referenced by KeSetAffinityThread(),KiFindReadyThread(),KiReadyThread(), KiScanReadyQueues()
2008-06-30 23:48:00 1673
原创 Recognizer & FS & Filter
注一:File system recognizer 文件系统识别器(下文简称为recognizer)File system 文件系统 (下文简称为fs)File system filter 文件系统过滤器(下文简称为filter)文件系统识别器是一个标准的NT内核模式驱动程序;它只实现一项功能:检查物理介质设备,如果它能够识别存储介质的格式便加载相
2008-06-30 23:46:00 1137
原创 Rootkit 1: Detection Hide Process
什么叫rootkit? 它是由有用的小型程序组成的工具包,使得攻击者能够保持访问计算机上具有最高权限的用户“root”.rootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码.rootkit主要分为下列大类:1 进程隐藏2 文件隐藏3 端口隐藏4 注册表隐藏5 驱动服务隐藏Part I: 进程隐藏一:序言 下列情况不在讨论
2008-06-30 23:45:00 1207
原创 如何写windows系统已保护的内存区域
windows系统在某些版本下对某些内存区域启用了写保护的功能,因为这些区域一般合法程序是不可能修改其内容的,那么我们如何来写这些内存呢?PS:1) 这些系统包括:windows xp与windows 2003 2) CPU提供写保护的功能是从486开始的 3) 一般合法程序不包括杀毒软件,因为他们在Hook SSDT中是直接改ServiceTableBase,而没有用in
2008-06-30 23:41:00 1474
原创 Ring0Prolog
1 Undocumented Windows NT中通过callgate实现的无驱动进如ring0的代码中的两个宏汇编代码 直接仿制于NT系统代码(_KiSystemService),随NT版本而变。Ring0Prolog macro PUSHAD PUSHFD PUSH FS ;FS:0即指向FFDFF000h这个重要结构,用户态与核心态的FS值不同,下面是例行公事而已
2008-06-30 23:38:00 1081
原创 小议PE病毒技术
Win32 PE病毒和普通Win32 PE程序一样需要调用API函数,但是普通的Win32 PE程序里面有一个导入函数表,该导入函数表对应了代码段中所用到的api函数在动态连接库中的真实地址(由PE Loader去填充这个地址的)。这样,调用api函数时就可以通过该导入函数表找到相应api函数的真正执行地址。但是对于Win32 PE病毒来说,他只有一个代码段,他并不存在引入函数段。既然如此
2008-06-30 23:31:00 1508
原创 Smss.exe进程分析
传说中的会话管理服务器进程,它是windows操作系统启动时引导的最重要的系统进程,它负责启动csrss.exe和winlogon.exe进程,并对它们进行监控,如果发现其中一个挂掉,它马上叫你当机,所以要想结束csrss.exe/winlogon.exe,先结束Smss.exe,源码前一目了然(摘自windows nt 4.0代码)//1 Module Info : 变量定义,提高当
2008-06-30 23:30:00 1604
原创 windows driver中的IO_STACK_LOCATION
define IoSkipCurrentIrpStackLocation( Irp ) /(Irp)->CurrentLocation++; /(Irp)->Tail.Overlay.CurrentStackLocation++; #define IoCopyCurrentIrpStackLocationToNext ( Irp ) Value:{ / PIO_
2008-06-30 23:28:00 1683
原创 win32调试接口的基本原理
错的关于windows平台下用户模式调试器的原理 所谓调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原理大概可以将之分为三类:内核态调试器、用户态调试器和伪代码调试器。 内核态调试器直接工作在操作系统内核一级,在硬件与操作系统之间针对系统核心或驱动进行调试,常见的有SoftICE、WinD
2008-06-30 23:23:00 1548 1
原创 隐藏内核模块的方法
在rootkit.com上一个russian hacker发的文章中提到这两种方法,和他交流了下,在llroot中实现了,代码贴出来灌水:/********************************************************************************** The following routines implement hide dri
2008-06-30 23:21:00 1859
原创 关于NT内核cancel irp的问题
NT内核中IRP的cancel是一个复杂的问题,很容易出错导致系统崩溃,ddk中的文档其实对这部分说的很详细,只是需要认真体会,osr网站上以前在NT insider杂志中有过2篇文章研究这个问题,总结这些资料,写个贴子罐水如下:1.为什么要取消irp?ddk文档中说的很清楚:"Any driver in which IRPs can be held in a pending state
2008-06-30 23:20:00 1514
原创 用APC实现在内核模式运行用户程序
//=====================================================================================////Name: void RunUserModeProcess() ////
2008-06-30 23:19:00 2313 1
原创 关于NT内核的apc机制
Asynchronous Procedure Calls (APCs) are a fundamental building block in NTs asynchronous processing architecture. An understanding of this mechanism is essential to better understand how NT works
2008-06-30 23:17:00 1525
原创 hook未导出native api的好办法
昨天写的那个 hook ssdt的驱动,用的是硬编码的办法,这样在不同的系统中由于NtShutdownSystem的服务号都不相同,所以在不同的操作系统上代码都要做修改,这个比较不爽.今天听老大PJF说有避免硬编码的方法,google了下,发现下面的文章,代码稍微改了改,用在我的驱动中,果然好使.文章贴在下面:----------------------------------------
2008-06-30 23:15:00 1127
原创 利用filter driver实现键盘记录
实现键盘记录的方法一般是用全局钩子注入进程,这种方法比较简单,网上有N多文章讨论,不过对于一个高明的程序员来说,仍然可以躲开全局钩子的拦截。而用一个键盘的过滤驱动程序来拦截按键,程序员基本不可能绕开它的拦截。这两天无聊的很,做项目不是很顺,抽了点时间写了个东西。贴在这里灌水,高手们就不要看了。driver entry是标准的例程,我们这里注册了一些分派函数NTSTATUSDriverE
2008-06-30 23:14:00 1536
原创 win2k下的APC机制
APC是运行在APC_level irql 上的内核机制。win2k下APC当作object来管理,在内核中定义的相应数据结构是KAPC 如下:typedef struct _KAPC { CSHORT Type;//对象类型,这里应该是ApcObject CSHORT Size;//KAPC结构的大小,应该为sizeof(KAPC) ULONG Spare0;
2008-06-30 23:12:00 960
原创 Windows2k下的同步机制
windows 2000在同步机制上有一个非常独到的设计,kernel中实现mutual exclusive的关键是IRQL.这是MS的巧妙设计,系统中允许的每个线程都被分配一个适合的IRQL,普通的user mode线程和系统线程均运行于Passive_LEVEL,这是最低一级的IRQL,而线程调度器运行在 Dispactch level,从dispatch level以上就是DIRQL,其
2008-06-30 23:11:00 650
原创 Obtaining KeServiceDescriptorTableShadow address
In Windows NT based operating system every system call originated in user mode which is to be processed by the system抯 kernel must go through the gate to the kernel itself where it would be dispat
2008-06-30 23:06:00 804 1
原创 WIN和TCPIP栈的一些资料
Microsoft® Windows® Vista™ Beta 1 and Windows Server™ "Longhorn" Beta 1 include a new implementation of the TCP/IP protocol suite known as the Next Generation TCP/IP stack. The TCP/IP protocol stack p
2008-06-30 23:02:00 1275
原创 AVP主动防御之隐藏进程
卡巴主动防御中检测隐藏进程的方法: Hook掉系统的SwapContext,这种方法是在2003年被提出的;这个函数被KiSwapThread调用,负责线程调度;下面这部分代码就是卡巴Detour SwapContext的汇编代码的分析(后面附上对应的c代码):(PS:突破这种方式来隐藏进程的方法也在随后就出来了,自己实现线程调度,详见:http://hi-tech.nsys.b
2008-06-30 22:55:00 1131
原创 Introduction to Registry Filtering in Vista(OSR)
Guest Article - Introduction to Registry Filtering in Vista (Part I) (By: The NT Insider, Vol 15, Issue 1, March- April 2008 | Published: 28-May-08| Modified: 28-May-08) By Jerry KelleyThe Registr
2008-06-30 22:54:00 1253
原创 线程创建流程
创建线程Call NtCreateThread;NtCreateThread(; OUT PHANDLE ThreadHandle, +8h; IN ACCESS_MASK DesiredAccess, +Ch; IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, +10h; IN
2008-06-30 22:51:00 1890
原创 进程创建流程
;进程创建过程开始 CreateProcessAcall kernel32!CreateProcessA ;10个参数; BOOL WINAPI CreateProcess(; __in_opt LPCTSTR lpApplicationName,; __inout_opt LPTSTR lpCommandLine,; __in_opt L
2008-06-30 22:49:00 1919
原创 WinXP 关于POINT-H万能断点 的教
创作《算法分析实战篇和应用篇之提高(一)我的常用断点系统 》,顺手对该文进行了翻译,前后共三个小时。原E文地址:by Ricardo Narvaja http://www.redrival.com/immlep/doc/Punto_H_english.rar 作者 Ricardo Narvaja | 邮箱 ricnar22@millic.com.ar时间 :22
2008-06-25 08:10:00 3154
原创 简单inline hook ObReferenceObjectByHandle保护进程和屏蔽文件执行
作 者: Sysnap时 间: 2008-05-30,19:16链 接: http://bbs.pediy.com/showthread.php?t=65731// ***************************************************************// Author: Sysnap // Link: htt
2008-06-24 09:58:00 1258
原创 也谈rootkit 注册表信息隐藏
注册表是Windows系统存储关于计算机配置信息的数据库,包括了系统运行时需要调用的运行方式的设置,是系统的核心。操作系统是用特殊的文件 (Hive文件)来存储注册表的内容,并提供给用户相关的编程接口(APIs)来进行注册表的操作,例如Advapi32.dll中的Registry Functions(如:RegEnumKey)。在Windows操作系统中,函数的调用有着极其规范的层次结构,如下图所
2008-06-24 09:47:00 1429
原创 一种躲避运行时代码校验的方法
作 者: NetRoc时 间: 2008-01-25,15:16链 接: http://bbs.pediy.com/showthread.php?t=58896一种躲避运行时代码校验的方法cc682/NetRoc关键字:代码校验,内存补丁,hook 我们有时候需要对运行中的程序打内存补丁,或者对它的代码挂一些钩子之类的工作。但是现在相当多软件进行了运行
2008-06-24 09:38:00 985
原创 Rootkit Unhooker驱动逆向分析
作 者: linxer时 间: 2008-06-19,00:31链 接: http://bbs.pediy.com/showthread.php?t=66839这个驱动本来准备端午节搞的,但后来端午节去了躺北京玩了几天,也就搁置了...最近连续花了4个晚上,大致把它搞的差不多了,有些收获...初学window驱动,水平很菜,有些东西我也未必清明,加上3环的代码还没有吃透,期间也
2008-06-24 09:35:00 1199 1
原创 VC编的病毒
//////////////////////////////////////////////////////////////////// ///////////// // Includes ///////////// #include #include /////
2008-06-23 11:44:00 1182
原创 create process as system privilege
here is a way to do this in kernel mode driver: (for WinXP/2003)Hook undocumented API: ZwCreateProcessExthen set the fouth parameter to SYSTEM handle info.typedef NTSTATUS (*ZWCreatePROCESSEX)
2008-06-23 11:25:00 814
原创 创建高权限进程
Author: sinisterEmail: sinister@whitecell.orgHomepage:http://www.whitecell.org Date: 2006-02-12/*****************************************************************文件名 : wssrun.c描述
2008-06-23 11:17:00 797 1
原创 Starting an Interactive Client Process in C++
The following example uses the LogonUser function to start a new logon session for a client. The example gets the logon SID from the clients access token, and uses it to add access control entries (A
2008-06-23 11:16:00 1071
原创 Liang的Rootkit习作-ZION
Liang把Rootkit实现习作晒出来,程序测试运行在Windows XP SP2上。除小部分涉及利用Windows或HIPS商业产品中潜在设计缺陷实现隐藏或者逃避的技巧代码已经隐去之外,完整代码可在下面下载,如有指正、交流可以通过chenliang0817@hotmail.com与他取得联系。Liang对习作的简单介绍如下:Win32平台下的Rootkit习作 Codename: Zion b
2008-06-18 11:39:00 1115
原创 免杀与过主动防御
一。免杀1。最简单的:加壳Svkp,Pelock,Telock,Asprotect等等牛壳,或者一些私人壳如免役007之类的,虽然方便,但免杀效果不一定好,因为现在杀毒会把壳的特征当病毒或者把加壳后的特征也收录,而且加壳的不能用于内存代码注射2。手工免杀用CCL 一类的定位工具定位出特征码,不同的杀毒的特征录入是不一样的,而且不止一处,所以免杀是体力活;然后逐一修改
2008-06-17 15:36:00 4306
原创 关于免杀NOD32高启发式侦查
NOD32定位出来的特征码比较多,手动修改非常麻烦,如果时间不允许的情况下,可以使用比较生僻的加壳加密软件来处理一下,一般都能过!最常用的就是利用北斗加两次壳即可过NOD32!NOD32一般把特征码定位在输入表,输出表和节表三个地方,网上流传的过NOD32的方法是修改输入表,将函数名称用0填充然后在空白处加上被填充的函数名,再将IAT里函数对应的thunk值改到指向新的函数名称,这种方法固
2008-06-17 15:35:00 1619
原创 定位IAT
定位IAT可根据读取exe的方法分为两类:pe装载器以装载的exe文件/通过内存映射方法读取exe文件。 1.简单方法: 直接通过以运行的exe文件来定位IAT #include #include void main() { HMODULE hMod = ::GetModuleHandle(NULL); //已运行的
2008-06-17 15:33:00 1064
原创 如何获得当前线程的用户名和此用户的SID
SID, security ID / 安全 ID 标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 2000 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户具有不同的 SID 号。安全标识符也
2008-06-17 15:29:00 2353
原创 如何调整中注册表权限
在NT/XP/2000下,注册表中有些键即时使用Administrators登录,也没有办法读取下面的数据,例如:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum,默认是无法读取的,碰到这种情况,我们一个方面可以利用regedt32来设置注册表的权限,但是对于用户来说可能不熟悉注册表的操作,那么我们的程序应该能够自动处理,怎么做呢?注意:
2008-06-17 15:25:00 3436
原创 对抗瑞星文件监控 恢复fsd
代码://得到系统内核模块基址DWORD FoundSystemModule(BOOL bKernel,char *sysFileName){ DWORD dwNeededSize,rc; PMODULES pModules=(PMODULES)&pModules; PCHAR pKerne
2008-06-17 15:22:00 841
UDP协议可靠传输文件
2011-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人