安全工具暗藏杀机:快速识别后门程序(精选6篇)由网友“包子狂人fx5700”投稿提供,这次小编在这里给大家整理过的安全工具暗藏杀机:快速识别后门程序,供大家阅读参考。
篇1:安全工具暗藏杀机:快速识别后门程序
一些热衷于安全方面的朋友可能会遇到这样的困惑,在某些网站下载的 工具本身就含有后门,这有点像网络中的“无间道”,我们先暂且不论到底是如何出现这种情况的,单单看一下如何才能将这些后门揪出来吧。
那么如何检测自己所使用的工具中是否含有后门呢?对于有一定经验的高手而言可以使用WSockExpert进行网络数据抓包,如果系统中没有WSockExpert,可以使用Netstat命令,用于显示协议统计信息和当前TCP/IP网络连接及端口占用信息。
1.关闭系统中所有可能连接网络的程序,然后只登录某个程序,打开命令提示符,输入并执行“Netstat -an>C:\NET1.TXT”命令,将未运行木马前的网络连接状态保存在C:\NET1.TXT之中,关闭程序,
2.运行“后门,配置并生成木马程序。
3.运行生成的QQ木马程序后重新登录程序。打开命令提示符,输入并执行“Netstat -an>C:\NET2.TXT”命令,将运行木马后的网络连接保存在C:\NET2.TXT中。
5.比较NET1.TXT和NET2.TXT我们会发现在NET2.TXT中多出了几个网络地址,而除了我们配置得到木马的连接地址外,其它就是后门了。
在用Netstat进行后门测试时要注意:Netstat并不能立即返回当前的网络连接状态,会有延迟,也就是说我们执行Netstat后看到的网络连接状态很可能是3秒钟以前的,不过这并不影响我们对后门的测试。
最后告诉大家,并不是所有的程序都能通过这种方式检测,比如扫描类工具,面对很多动态网络环境的操作,会造成多个变化的网络地址加入到程序中来。
篇2:Ginwui后门程序分析
今年5月19日CVE发布编号为CVE--2492安全公告,Microsoft Word处理DOC文件存在缓冲区溢出漏洞,Microsoft Word运行特殊构造的doc文件,导致执行任意代码,远程攻击者可以利用此漏洞通过诱骗用户打开恶意DOC文件在用户机器上执行任意指令。微软于6月13号发布该漏洞的补丁。5月24日发现攻击者利用此漏洞构造特殊的Word文档进行传播,存在漏洞的Word打开该文档将导致文件中的后门Ginwui.exe运行,下面我们分析这个后门的运作机制。
一、Ginwui.exe的行为分析
Ginwui.exe将自身复制为临时目录下的20060426.bak,然后执行20060426.bak并删除原程序文件Ginwui.exe。20060426.bak文件释放zsydll.dll和zsyhide.dll到%windir%system32目录下并将zsydll.dll注入Winlogon.exe进程中。Winlogon.exe启动%ProgramFiles%Internet ExplorerIEXPLORE.EXE,并连接域名scfzf.xicp.net 。zsyhide.dll在注册表AppInit_DLLs键下添加%windir%system32zsyhide.dll,zsydll.dll在注册表创建zsydll项以便系统重启后重新加载运行。
zsyhide.dll文件注册表详细导出:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows]
AppInit_DLLs=C:WINNTsystem32zsyhide.dll
zsydll.dll文件注册表详细导出:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogonNotifyzsydll]
DllName=C:WINNTsystem32zsydll.dll
Shutdown=DoShutdown
Startup=DoStartup
Asynchronous=dword:00000001
Impersonate=dword:00000000
二、Ginwui.exe的清除方法
系统重启后执行cmd.exe,把%windir%system32目录下的zsydll.dll和zsyhide.dll改名,删除在注册表中的zsydll项和AppInit_DLLs项下的C:WINNTsystem32zsyhide.dll键值,
重启系统把%windir%system32目录下的zsyhide.dll和zsydll.dll删除(改名后的文件),临时目录下的20060426.bak可以直接删除。
三、危害
远程攻击者完全控制被攻击的主机,拥有系统权限,可以对系统进行任意操作。比如盗取用户的帐户和口令、个人信息、信用卡帐户等。
四、传播方式
Ginwui.exe是目前利用WORD漏洞进行传播的木马程序,从上面分析来看不仅可以利用WORD漏洞进行传播,还可以利用以前的IE漏洞、FLASH漏洞等方式来进行传播。
五、防范措施
6月13日微软发布等级为严重的安全公告 MS06-027(Microsoft Word 中的漏洞可能允许远程执行代码),该漏洞利用格式错误的对象指针的 Word 中存在一个远程执行代码漏洞。攻击者可以通过构建特制的 Word 文件来利用此漏洞,此文件可能允许远程执行代码。微软针对此漏洞已发布安全补丁,请及时更新。
临时解决方法是以安全模式的方式运行该软件--在Word的快捷方式中添加命令行“WINWORD.EXE /safe”。请及时更新杀毒软件的病毒库。使用防火墙规则禁止系统从内部对localhosts.3322.org和scfzf.xicp.net进行连接。
微软及杀毒厂商已经把Ginwui.exe定义为Ginwui.B或Backdoor.Win32.Ginwui.b后门病毒。
篇3:什么是后门程序及后门的分类
什么是后门程序 后门程序又称特洛伊木马,其用途在于潜伏在电脑中,从事搜集信息或便于 进入的动作,
什么是后门程序及后门的分类
,
后程序和电脑病毒最大的差别,在于后门程序不一定有自我复制的动作,也就是后门程序不一定会感染其他电脑。 后门是一种登录系统的方法,它不仅绕过系统
篇4:Linux系统的各种后门和工具的简单讲解
攻入Linux系统后,很多入侵者往往就开始得意忘形了,
Linux系统的各种后门和工具的简单讲解
,
这其中还有一个原因,就是技术性也要求更高了。下面,我们来看看一些常用的经典工具。 1、从这里延伸:后门和连接工具 (1)Httptunnel Tunnel的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就
篇5:后门技术及rootkit工具Knark分析及防范WEB安全
本文讨论了Linux环境下攻击者入侵成功以后常常使用的一些后门技术,并且对最著名的rootkit工具之一?knark进行了详细的分析,并且指出了在发现系统被入侵以后如何发现是否是kark及如何恢复,
注意:本文是用于管理员学习之用,不可用于进行网络攻击否则带来的任何法律后果自行负责。本文作者不对由于本文导致的任何后果负任何责任。
一、什么是“rootkit”?
入侵者入侵后往往会进行清理脚印和留后门等工作,最常使用的后门创建工具就是rootkit。不要被名字所迷惑,这个所谓的“rootkit”可不是给超级用户root用的,它是入侵者在入侵了一太主机后,用来做创建后门并加以伪装用的程序包。这个程序包里通常包括了日志清理器,后门等程序。同时,程序包里通常还带有一些伪造的ps、ls、who、w、netstat等原本属于系统本身的程序,这样的话,程序员在试图通过这些命令查询系统状况的时候,就无法通过这些假的系统程序发觉入侵者的行踪。
在一些 组织中,rootkit (或者backdoor) 是一个非常感兴趣的话题。各种不同的rootkit被开发并发布在internet上。在这些rootkit之中, LKM尤其被人关注, 因为它是利用现代操作系统的模块技术。作为内核的一部分运行,这种rootkit将会越来越比传统技术更加强大更加不易被发觉。一旦被安装运行到目标机器上, 系统就会完全被控制在hacker手中了。甚至系统管理员根本找不到安全隐患的痕迹, 因为他们不能再信任它们的操作系统了。后门程序的目的就是甚至系统管理员企图弥补系统漏洞的时候也可以给hacker系统的访问权限。
入侵者通过:设置uid程序, 系统木马程序, cron后门等方法来实现入侵者以后从非特权用户使用root权限。
*设置uid程序。 在一些文件系统理放一些设置uid脚本程序。无论何时它们只要执行这个程序它们就会成为root。
*系统木马程序。 替换一些系统程序,如“login”程序。因此, 只要满足一定的条件,那些程序就会给 最高权限。
*Cron后门。 在cron增加或修改一些任务,在某个特定的时间程序运行,他们就可以获得最高权限。
具体可能通过以下方法给予远程用户以最高访问权限: “.rhost” 文件, ssh认证密钥, bind shell, 木马服务程序。
*“.rhosts” 文件。一旦 “+ +”被加入某个用户的.rhosts文件里, 任何人在任何地方都可以用这个账号来登陆进来而不需要密码。
*ssh认证密钥。 把他自己的公共密钥放到目标机器的ssh配置文件“authorized_keys”里, 他可以用该账号来访问机器而不需要密码。
*Bind shell。 绑定一个shell到一个特定的tcp端口。任何人telnet这个端口都可以获得交互的shell。更多精巧的这种方式的后门可以基于udp,或者未连接的tcp, 甚至icmp协议。
*Trojaned服务程序。任何打开的服务都可以成为木马来为远程用户提供访问权限。例如, 利用inetd服务在一个特定的端口来创建一个bind shell,或者通过ssh守护进程提供访问途径。
在入侵者植入和运行后门程序之后, 他会设法隐藏自己存在的证据,这主要涉及到两个方面问题: 如何来隐藏他的文件且如何来隐藏他的进程。
为了隐藏文件, 入侵者需要做如下事情: 替换一些系统常用命令如“ls”, “du”, “fsck”。在底层方面, 他们通过把硬盘里的一些区域标记为坏块并把它的文件放在那里。或者如果他足够疯狂,他会把一些文件放入引导块里。
为了隐藏进程, 他可以替换 “ps”程序, 或者通过修改argv[]来使程序看起来象一个合法的服务程序。有趣的是把一个程序改成中断驱动的话,它就不会出现在进程表里了。
RootKit-Knark的历史
Knark是第二代的新型rootkit工具-其基于LJM(loadable kernel module)技术,使用这种技术可以有效地隐藏系统的信息。作者在代码和README文件中都标注有不承担责任的声明,声明该代码不可以被用作非法活动。然而该软件可以容易地被用于这种目的。
Knark是由creed@sekure.net编写的,主要基于www.dataguard.no/bugtraq/_4/0059.html中Runar Jensen编写的代码heroin.c,设计思想主要来自于Phrack 52中plaguez发表的文章Weakening the Linux Kernel“。在重新编写了heroin.c的大部分代码以后,Creed决定重新命名为”Knark“,在瑞典语中是指吸毒者。Creed编写的其他软件可以在www.sekure.net/~happy-h/得到,但是由于该站点只有瑞典语版本,因此应用并不广泛。
Knark的第一个公开版本是0.41,发布于June, 。可以在B4B0 #9中索引到它:packetstorm.securify.com/mag/b4b0/b4b0-09.txt。随后0.50和0.59被发布,当前版本是0.59。可以从这里下载0.59版。
Knark特性
Knark0.59具有以下特性:
*隐藏或显示文件或目录
*隐藏TCP或UDP连接
*程序执行重定向
*非授权地用户权限增加(”rootme“)
*改变一个运行进程的UID/GID的工具
*非授权地、特权程序远程执行守护进程
*Kill ?31来隐藏运行的进程
联合使用程序执行重新定向和文件隐藏,入侵者能提供各种后门程序执行。由于执行重定向是在内核级别进行的,因此文件检测工具不会发现程序文件被修改-原始的执行程序并没有被修改,因此配置检测工具在路径环境中也不会发现任何异常。
如果Knark结合另外一个用来隐藏系统当前加载的模块的LKM工具modhide,就可能实现甚至通过lsmod命令也不能发现knark的存在。
Knark软件包的安装和使用
该软件包的核心软件是knark,c,它是一个Linux LKM(loadable kernel-module)。运行命令”make“来编译knark软件包,通过”insmod knark“命令来加载该模块。当knark被加载,隐藏目录/proc/knark被创建,该目录下将包含以下文件:
author 作者自我介绍
files 系统中隐藏文件列表
nethides 在/proc/net/[tcp|udp]隐藏的字符串
pids 被隐藏的pids列表,格式类似于ps命令输出
redirects 被重定向的可执行程序入口列表
该软件包编译以后将有下面这些工具软件(它们都依赖于被加载的模块knark.o,
除了taskhack.c,其用于直接修改/dev/kmem)
hidef 用于在系统中隐藏文件
在/usr/lib目录下创建子目录hax0r,然后运行命令”./hidef /usr/lib/.hax0r“,则该目录会被隐藏,”ls“或”du“等命令都不能显示该目录及其子目录。
unhidef 用来恢复被隐藏的文件
你可以通过访问”cat /proc/knark/files“来察看你隐藏了哪些文件。通过”./unhidef /usr/lib/.hax0r“命令来解除对隐藏文件的隐藏。但是这里有个小小的bug,使得被隐藏的目录在/proc/knark/files中显示的是其加载开始的路径,也就是说如果系统有一个文件系统加载在/mnt,你隐藏了/mnt/secret,则在/proc/knark/files中显示的被隐藏的目录为/secret。因此不会影响根文件被隐藏的目录。
ered 用来配置重定向程序的执行
拷贝特洛伊木马版本的sshd为/usr/lib/.hax0r/sshd_trojan,然后运行”./ered /usr/local/sbin/sshd /usr/lib/.hax0r/sshd_trojan“,这样当/usr/local/sbin/sshd被运行时,实际上运行的特洛伊木马版本的sshd。可以通过命令./ered -c来清楚所有的可执行程序重定向。
nethide 用来隐藏/proc/net/tcp和/proc/net/udp中的某些字符串
netstat命令就不会得到指定的链接信息。通过命令/nethide ”:ABCD “可以隐藏和端口号ABCD(十六进制)相关的连接(43981 dec)。也就是对/proc/net/[tcp|udp]读取时进行”grep -v“操作。
你必需理解使用该程序从/proc/net/[tcp|udp]得到的输出的意义。假设系统运行有sshd,那么连接到本地22端口以后,运行”netstat -at“,则输出可能包含:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:ssh localhost:1023 ESTABLISHED
现在我们来检测文件/proc/net/tcp:
cat /proc/net/tcp
则输出可能包含入下内容:
local_address rem_address blablabla...
0:0100007F:0016 0100007F:03FF 01 00000000:00000000 00:00000000 00000000
若我们希望隐藏和地址127.0.0.1相关的任何信息,我们必须使用如上面所示的十六进制的格式。因此如果希望隐藏地址127.0.0.1的22号端口相关的内容就要使用0100007F:0016来标识该链接。因此
./nethide ”0100007F:0016“
将隐藏to/from localhost:22相关的链接信息。
./nethide ”:ABCD “
来去除隐藏。
rootme 用来实现非特权用户获得root访问权限
./rootme /bin/sh
就可以实现以root身份运行/bin/sh。
./rootme /bin/ls -l /root
则是仅仅以root身份运行单个命令。
taskhack 用来改变某个运行着的进程的uid和gid
./taskhack -alluid=0 pid
该命令将进程pid的所有*uid@#s (uid, euid, suid, fsuid)为0 (root).
ps aux | grep bash
creed 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash
现在来改变该进程的euid为0:
./taskhack -euid=0 91
ps aux | grep bash
root (!) 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash
rexec 用来远程执行knark-server的命令:
./rexec www.microsoft.com haxored.server.nu /bin/touch /LUDER
这命令将从www.microsoft.com:53发送一个伪装的udp数据包到 haxored.server.nu:53,来运行haxored.server.nu的命令”/bin/touch /LUDER"
入侵者入侵以后往往将knark的各种工具存放在/dev/某个子目录下创建的隐藏子目录,如/dev/.ida/.knard等等。
检测系统是否被安装了Knark
Knark的作者Creed,发布了一个工具:knarkfinder.c来发现Knark隐藏的进程。
检查系统是否安装有Knark的最直接有效的方法是以非特权用户身份来运行Knark的一个软件包如:rootme,看该用户是否能获得root权限。由于目前Knark目前没有认证机制,因此入股系统被安装了Knark任何一个本地用户运行这个程序都能获得root权限。
还有一个最有效的发现系统是否被knark或者类似的rootkit所感染的方法就是使用kstat来检测,具体参考本站的Nexeon写的解决方案文章:检测LKM rootkit。
Knark防范
防止knark最有效的方法是阻止入侵者获得root权限。但是在使用一切常规的方法进行安全防范以后,防止knark之类的基于LKM技术的rootkit的方法是:
*创建和使用不支持可加载模块的内核,也就是使用单块内核。这样knark就不能插入到内核中去了。
*使用lcap (pweb.netcom.com/~spoon/lcap/)实现系统启动结束以后移除内核LKM功能,这样可以防止入侵者加载模块。然而这种方法存在一定的问题,入侵者可以在获得root权限以后修改启动脚本,在lcap启动之前来加载knark模块从而逃避lcap的限制。
篇6:程序分析工具gprof介绍
程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析,程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容。二是以系统优化为目的,通过对程序中关键函数的跟踪或者运行时信息的统计,找到系统性能的瓶颈,从而采取进一步行动对程序进行优化。最后一点,程序分析也有可能用于系统测试和程序调试中。当系统跟踪起来比较复杂,而某个BUG又比较难找时,可以通过一些特殊的数据构造一个测试用例,然后将分析到的函数调用关系和运行时实际的函数调用关系进行对比,从而找出错误代码的位置。
程序分析工具不同于调试器,它只产生程序运行时某些函数的调用次数、执行时间等等宏观信息,而不是每条语句执行时的详细信息。Gprof是Linux下一个强有力的程序分析工具。对于C、Pascal或者Fortran77语言的程序,它能够以“日志”的形式记录程序运行时的统计信息:程序运行中各个函数消耗的时间和函数调用关系,以及每个函数被调用的次数等等。从而可以帮助程序员找出众多函数中耗时最多的函数,也可以帮助程序员分析程序的运行流程。相信这些功能对于分析开源代码的程序员来说,有着相当大的诱惑力。
用gprof分析程序
用gprof对程序进行分析主要分以下三个步骤:
用编译器对程序进行编译,加上-pg参数。
运行编译后的程序。
用gprof命令查看程序的运行时信息。
先以一个简单的例子演示一下吧。随便找一个能够运行的程序的源代码,比如下面的文件test.c:
1
2 int IsEven(int x)
3
4 {
5
6 return 0 == x & 1;
7
8 }
9
10 int main(int argc, char *argv[]
11
12 {
13
14 int i = 0;
15
16 while(++i < 1000) IsEven(i);
17
18 }
首先,用以下命令进行编译:
[root@localhost]#gcc –o test –pg test.c
然后,运行可执行文件test.
[root@localhost]#./test
运行后,在当前目录下将生成一个文件gmon.out,这就是gprof生成的文件,保存有程序运行期间函数调用等信息。
最后,用gprof命令查看gmon.out保存的信息:
[root@localhost]#gprof test gmon.out –b
这样就有一大堆信息输出到屏幕上,有函数执行单间,函数调用关系图等等,如下:
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1000 0.00 0.00 IsEven(int)
Call graph
granularity: each sample hit covers 2 byte(s) no time propagated
index % time self children called name
0.00 0.00 1000/1000 main [7]
[8] 0.0 0.00 0.00 1000 IsEven(int) [8]
-----------------------------------------------
Index by function name
[8] IsEven(int)
以上介绍了gprof最简单的使用方法,下面针对其使用过程中的三个步骤详细说明,
管理资料
编译和链接
上面的例子中,程序比较简单,只有一个文件。如果源代码有多个文件,或者代码结构比较复杂,编译过程中先生成若干个目标文件,然后又由链接器将这些目标文件链接到一起,这时该怎么使用gprof呢?
对于由多个源文件组成的程序,编译时需要在生成每个.o文件的时候加上-pg参数,同时在链接的时候也要加上-pg参数。对于链接器不是GCC的情况,如ld,又有特殊的要求。
同时,-pg参数只能记录源代码中各个函数的调用关系,而不能记录库函数的调用情况。要想记录每个库函数的调用情况,链接的时候必须指定库函数的动态(或者静态)链接库libc_p.a,即加上-lc_p,而不是-lc。
还要说明的是,如果有一部分代码在编译时指定了-pg参数,而另一部分代码没有指定,则生成的gmon.out文件中将缺少一部分函数,也没有那些函数的调用关系。但是并不影响gprof对其它函数进行记录。
运行
编译好的程序运行时和运行一般的程序没有什么不同,只是比正常的程序多生成了一个文件gmon.out。注意,这个文件名是固定的,没法通过参数的设置进行改变。如果程序目录中已经有一个gmon.out,则它会被新的gmon.out覆盖掉。
关于生成的gmon.out文件所在的目录,也有以下约定:程序退出时所运行的文件所在目录就是生成的gmon.out文件所在的目录。如果一个程序执行过程中调用了另一个程序,并在另一个程序的运行中终止,则gmon.out会在另一个程序所在的目录中生成。
还有一点要注意的就是当程序非正常终止时不会生成gmon.out文件,也因此就没法查看程序运行时的信息。只有当程序从main函数中正常退出,或者通过系统调用exit()函数而退出时,才会生成gmon.out文件。而通过底层调用如_exit()等退出时不会生成gmon.out。
查看
查看程序运行信息的命令是gprof,它以gmon.out文件作为输入,也就是将gmon.out文件翻译成可读的形式展现给用户。其命令格式如下:
gprof [可执行文件] [gmon.out文件] [其它参数]
方括号中的内容可以省略。如果省略了“可执行文件”,gprof会在当前目录下搜索a.out文件作为可执行文件,而如果省略了gmon.out文件,gprof也会在当前目录下寻找gmon.out。其它参数可以控制gprof输出内容的格式等信息。最常用的参数如下:
-b 不再输出统计图表中每个字段的详细描述。
-p 只输出函数的调用图(Call graph的那部分信息)。
-q 只输出函数的时间消耗列表。
-e Name 不再输出函数Name 及其子函数的调用图(除非它们有未被限制的其它父函数)。可以给定多个 -e 标志。一个 -e 标志只能指定一个函数。
-E Name 不再输出函数Name 及其子函数的调用图,此标志类似于 -e 标志,但它在总时间和百分比时间的计算中排除了由函数Name 及其子函数所用的时间。
-f Name 输出函数Name 及其子函数的调用图。可以指定多个 -f 标志。一个 -f 标志只能指定一个函数。
-F Name 输出函数Name 及其子函数的调用图,它类似于 -f 标志,但它在总时间和百分比时间计算中仅使用所打印的例程的时间。可以指定多个 -F 标志。一个 -F 标志只能指定一个函数。-F 标志覆盖 -E 标志。
-z 显示使用次数为零的例程(按照调用计数和累积时间计算)。
不过,gprof不能显示对象之间的继承关系,这也是它的弱点.
来自:www.cnblogs.com/huangpeng/archive/2009/02/17/1392456.html
【安全工具暗藏杀机:快速识别后门程序(精选6篇)】相关文章:
草船借箭的教学设计2023-08-04
对未来的门范文2023-02-05
隐藏与显露议论文2022-05-08
草船借箭教学设计2022-11-12
夏季安全教育心得体会2022-05-31
《森林报》阅读心得体会2022022-10-16
初三学生作文:开在记忆深处的花朵2023-02-07
读鸿门宴有感2022-05-07
防溺水安全心得体会2022-10-05
森林报读书笔记优秀500字2022-08-25