现金分享

当前位置:主页 > 现金分享 >

N种内核注入DLL的思路及实现 - 狂客

内核注入

,这项技术古旧,但恰好是职务的。。现时RK的偏袒地感动缺乏皱纹。,游玩是

SYS+DLL

,有些缺乏用锉锉。,全体都存位于记忆力中。。或许某些人会说。:全体都在后室。是什么办不到的?。是啊,假如内核可以做全部的可以在R3上应验的动手术,,软件研制人员不用做申请表格。。时而,本人真的需求R3顺序来发动者黏土层,这是努力地的或不用要的。,过程 /  DLL是单独马上的选择。,但因此皱纹过于心比天高。,因而更多的先生感动关怀DLL。。

    研制变得安全软件、小型器,本人可以从中招致相对者。,Anti rootkit工夫,在顶点情境下,您可以应用能与之比拟的东西的技术找到。、通便RK,抵押品用户计算器的精神健全的应用。。在此,我将讨论内核注入的几种思惟和使掉转船头道义。。


(1) APC技术

    将APC拔出到AltbbALE的用户形态线索中,让它落实它的外壳行为准则。,落实本人的行为准则。。该方式复杂可用的。,但不敷不变。,相容性差。产生蠲,T分摊涌现拔出等减轻景象。,缺乏彻底击败。,拔出时而被截距。,无法范围盘算归结为。。(指我究竟应用过的发动者顺序):

反向波湾阴谋经过源行为准则

)


(2) 内核Patch  [url=file://KnownDLLs/]\KnownDLLs\URL CreateThread

    [url=file://KnownDLLs/]

\KnownDLLs

URL是目的干才,当最新的磁盘DLL装载量到内存时,当对立的事物过程吝啬的呼叫DLL时,,摈除从磁盘反复装载量。,从在这里测绘到本身的过程空的。。这给了本人单独大好的时期去做大局修补。:

        ZwOpenSection翻开 [url=file://KnownDlls/]

\KnownDlls\

URL,转会ZWMAPVIEWFFIEW将单独复本测绘到您本身的过程空的。,当初的在内存的行为准则段中找到间隔。,选择在这里作为本人的假职务的记忆缓冲。。修正CREATTHOST职务的前5个音节,跳绳到因此间隔。,当体系做成某事什么线索被发现时,将转变成CREATTHOST职务。,当初的在间隔中落实ShellCode。,它担任叫LoadLibrary装载本人的DLL。。DLL一次装载量,IOCTL将环行的引航员。,让驱动程序卸车钩。这就应验了内核注入DLL的皱纹。。在测验中找到

因此皱纹转会CytType职务恰好是频繁。,因而扳机会很快。,可以在不到一秒钟的工夫内装载量DLL。,本人的吊钩也被扔弃了。。所以增多了不变性。。示意图列举如下:



(3) 内核 HOOK ZwMapViewOfSection

    装载量时会转会稍许的模块。

ZwMapViewOfSection

,比方过程发现时测绘N份DLL到本身的发明空的中去.本人交换SSDT做成某事因此职务,正装载量过滤。

的情境,从参量流行它的根底,Inline 吃钩

CreateThread

职务,在因此过程的发明地址空的中跳绳到缓冲。,应验了DLL的装载量皱纹。

转折点API


ZwAllocateVirtualMemory

---- 在过程空的中分派内存,放置Shellcode


ZwProtectVirtualMemory

---- 使通常内存块可读和可写。


IoAllocateMdl

---- 发现MDL

转折点行为准则列举如下



    与方式2比拟,规律类似。但时期区分。,事实上能与之比拟的东西的归结为。,它只会延缓DLL的注入。。对Shellcode的编纂,几乎平均。小萝卜和甘蓝有本身的爱。,首要感兴趣人事栏的发展。。假如排SeleCal码毛病,请到史诺系去查材料。,非常模板,在这里挑剔YY。。


读雪与读月——获知ShellCode构图
[注]单独复杂的Shellcode
Shellcode的小认真思考
Add_Section

(4)

内核 HOOK
NtCreateThread

    崇拜者

皱纹发现皱纹

,显然,有很多方式可以经过补丁使掉转船头DLL注入。。

    当过程完毕时,它是单独

空水壶

,缺乏炎热的的开水(斜纹刻石刀)。,因而体系转会NtCeReTeType来发现它的主线索(注水)。 –

生水

),处于停顿状态了很长一段工夫后,我不耐烦了。,因而体系跳出了。,回到皱纹空的,呼叫环行的,对它说:这是单独新的皱纹摆脱了。,你把它标在你的注视上。。当初的开端装载量DLL。,把体系KnownDLLs做成某事本身需求的DLL都Map一份到因此大水壶中。当初的KiThreadStartup把壶里的生水热烈了。,水就因此开端了。

炎热的

了,此刻,主线索开端税收。。。。

    截距NtCreateThread,拿来

通常线索背景

,保留它吝啬的来回的地址(在空水壶里),为本身胁持地址,在内的配药ShellCode以装载量目的DLL。。对斥责者的选择,非常想。在这里是单独复杂的附加到通常的皱纹。,在丰足的发明2GB过程地址空的中分派属于你本身的一件小内存,Enough ShellCode够了。。示意图列举如下:



(5) 经用的内核传染模块,让传染模块扶助本人。Load DLL

    因此方式非常远。,最原始和最原始的传染先前开端。,可以补充新的大吃大喝。,插层间隔,简言之,让对立的事物模块装载量到内存中,扶助本人装载量DLL下的途径。,一旦装载量DLL,它就可以回复传染。,通便足迹。竟至传染密电码,一堆互联网网络。提供它挑剔由传染发动者顺序发动者的(更多能防范和),对立的事物的气质是平均的。,留意本身装扮。。


(6) 截距NtCreateUserProcessNtCreateSymbolicLinkObject

    前者不料在Vista下应用。 截获后

PsLookupProcessThreadByCid

流行ETHREAD / EPROCESS,断定如果是

使遭受的,假如是,则在过程空的中分派内存。,转会

NtGetContextThread

获取通常线索背景,转会ZwWriteVirtualMemory配药Shellcode区域,拿来

LdrUnloadDll

LdrGetDllHandle

等地址,经过它们装载量DLL。当初的工具

NtSetContextThread

复原原始背景。对因此方式,请参阅DRIVEREST上的小机件颁布的BIN。。

[”

内核使掉转船头DLL注入。它可以完整整数的KAV反病毒A

”]


(7) 内核截距NtResumeThread
(8)NtUserSetWindowsHookEx 注入

捎带说一下,在R3上停止DLL注入。

1.

CreateRemoteThread

(或)

NtCreateThreadEx

(应用) in Vista)

  2.

SetThreadContext

(多样化 the EIP)

  3.

NtQueueAPCThread

  4.

RtlCreateUserThread

  5.

SetWindowHookEx
小结:

    看整个皱纹的开端皱纹,有很多地方可供修补。,提供抵押品皱纹、线索背景缺乏被毁灭。,投入方式有很多种。。提供确保本人的DLL注入工夫十足短。,不变性十足高。。当本人只好要从内核注入DLL到用户过程去时,因此体系被深深地流毒了。,此刻,应用下面提到的技术装载量DLL。,让DLL应验本人不克不及驾驭的税收。,这是可以承担的。。

    下面提到的想是我当初所考虑和使掉转船头的。,特别的的顺序可以在行为准则中查看。。迎将全部积极探索,较好的、更不变。

不罪恶

的方式。

咨询热线:  Copyright © 2016-2017 bwin - bwin官网 - bwin娱乐 版权所有