IV. 高级技巧
----------------------------------------------------------------------
内容 : 1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
* 1. 前言 *
一旦你装了第一个sniffer开始你的hack生涯,你就应该知道并使用这些技巧!
请运用这些技巧---否则你的hack之旅就行将结束.
* 2. 阻止任何跟踪 *
有时候你的hacking活动会被人发现.那并不是什么大问题 - 你hacked一些站点
可能会被关掉,但谁管它呢,赶紧离开就是了.但如果他们试图跟踪你的来路(通常
是为了抓住你)的话那就很危险了!
这一节将告诉你他们跟踪你的各种可能的方法以及你该如何应对.
* 通常对系统管理员来说发现一个hacker是从哪里来的并不是什么问题:检查log记
录(如果那个hacker真的那么蠢的话);看看hacker安装的sniffer的输出记录(也许
里面也记下了他的连接)或者其他系统记帐软件(象loginlog等等);甚至可以用netstat
显示所有已经建立的网络连接--如果那个hacker正在线的话,那他就被发现了.
这就是为什么你需要一个gateway server(网关).
* 什么是gateway server?
它是你所"拥有"的很多服务器中的一个,你已经得到了它的root权限.你
需要root权限去清除wtmp/lastlog/utmp等系统记录或者其他一些记帐软
件的log文件.除此之外你不在这台机器上做任何其他的事(它只是个中转
站).你应当定期更换gateway server,可以每隔1,2个星期更换一次,然后
至少一个月内不再使用原来的gateway server.这样他们就很难跟踪到你
的hacking server.
* hackin server - 所有活动的出发点
你从这些机器开始hacking.Telnet(或者更好的:remsh/rsh)到一个gateway server,
然后再到一个目标机器.你需要有root权限以修改log.你必须每隔2-4个星期就更换
hacking server..
* 你的堡垒/拨号主机.
这是个临界点.一但他们能跟踪回你拨号进入的机器,你就有麻烦了.只要打
个电话给警察,再进行一次通信线路跟踪,你的hack活动就会成为历史了,也
许是你的未来.
在堡垒主机上你不需要得到root权限.既然你只是通过modem拨入,那里没有
什么必须修改的记录.你应该每天用一个不同的帐号拨号进入,尽量用那些
很少使用的.你应该找到至少2个你能拨号进去堡垒主机,每隔1-2个月更换一
次.
>> 译者注:我对phreak不熟.我猜大部分的国内hacker还没什么本事能躲过电信局
>> 的跟踪.所以最好不要用别人的帐号上网,特别是那些很少上网的帐号,一旦他
>> 发现上网费用剧增,肯定会让电信局追查的,到时候你就大难临头了.如果
>> 你用那些上网频繁的人的帐号,他反倒不会注意,只会以为这个月上的太厉
>> 害了.:-)(这绝对没有鼓励你盗用别人帐号的意思,这等于盗窃,凭什么你上网
>> 要别人交钱?就凭你会用john破几个口令吗?hacker的名声就是让这些打着hacker
>> 旗号的无耻之徒败坏的.对这种人就得抓!所以我对这样的phreaker没有什么好感,
>> 你要真有本事,就别嫁祸别人,而且还要让电信局查不出来.) 说多了,咱们言归正传.
注意: 如果你能每天拨入不同的系统(比如通过"蓝盒子"),那你就不需要那些
hacking server了.
* 使用蓝盒子,这样即使他们跟踪到你的堡垒主机,也不能(至少是不能很容易地)
追踪到你的电话...
使用蓝盒子必须小心,德国和美国的电话公司有专门的监视系统来追踪使用蓝盒
子的人...
使用一个中间系统来传送你的电话将会使跟踪更加困难, 但是同样由于你使用
一个pbx或其他的什么东西, 仍使你处于被抓的危险中. 这取决于你.
注意在丹麦所有的电话数据均被记录!即使在你打完电话10年后,他们仍然能证明你
曾登录过他们的拨号系统从事hack活动...
- 其他的
如果你想运行satan,iss,ypx,nfs文件句柄猜测程序..你应当使用一个专门的服务
器来完成.不要用这个服务器telnet/rlogin到目标服务器,只是用它来进行检测.
有些程序可以bind到一个特殊端口,当一个指定到该端口的连接建立的时候,它自动
打开一个连接连到另外一个服务器的某个端口(有些就模拟一个shell,你可以从这个
socket daemon中"telnet"到其他机器).
使用这种程序你不会被记录(防火墙log除外).有很多程序可以帮你完成上述功能.
>> 译者注:这种程序我常用的有datapipe.c,telbounc.c,还是很好用的.它就象是个
>> 代理服务器,但是不会有记录.:)
如果可能的话,hacking server或者gateway server应该在国外!
因为如果你的入侵被发现,当发现你来自国外的主机时,大多数网管都会放弃追查.
即使是警察要通过不同的国家追踪你,这也至少可以拖延2-10个星期的时间...
#下面是hack过程的简图,也许对你有些帮助;-)
+-------+ ~---------------> +-------------+ +-----------+
|+-----+| > > | | | |
||本机 || --> > 安全拨号线路 > --> | 堡垒主机 | --> | hacking |
|+-----+| > > | (至少有3个) | | server |
+-------+ ~---------------> +-------------+ +-----------+
|
|
v
+-----------------+ +--------+ +-----------+
| | | | | |
| 内部网络中的主机| ... <-- ... |目标主机| <-- | gateway |
| | | | | server |
+-----------------+ +--------+ +-----------+
* 3. 找到并处理所有的LOG文件 *
找到所有的logfiles是很重要的---即使他们被隐藏.要找到它们有两种可能的方法:
1)找到所有打开的文件.
既然所有的log必须写到某个地方去,所以用可以用LSOF(LiSt Open Files)程序
去检查所有打开的文件,必要的话就得修改它们.
>> 译者注:lsof由Vic Abell <
abe@purdue.edu>编写,用来提供被进程打开的文件的信息,
>> 它的最新版本可以在
ftp://vic.cc.purdue.edu/pub/tools/unix/lsof下找到.有趣
>> 的是,不久前有人发现lsof4.40以前的版本中存在buffer overflow问题,可以取得root
>> 权限.:-)
2) 搜索所有在你登录后有变化的文件
在你登录后,执行"touch /tmp/check",然后可以干你的活.最后只要执行"find /
-newer /tmp/check -print",并检查找到的文件,如果其中有记帐文件,就应该修改
它.注意不是所有版本的find都支持 -newer 参数.你也可以用"find / -ctime 0
-print" 或者 "find / -cmin 0 -print"来查找它们.
>> 译者注:我更喜欢用-exec ls -l {} \;来代替-print,因为这可以列出比较详细的信息.
>> 注意上述方法主要是针对系统记帐软件的,它可能会记录你执行的命令.对于只记录login
>> 信息的软件,它在你看到shell提示符以前就已经完成记录了.所以用这种检查是查不出来的.
检查你找到的所有的logfiles.它们一般在/usr/adm,/var/adm或者/var/log,/var/run.
如果它们被记录到@loghost,那你可能就有点麻烦了.你需要hack那台loghost主机去修改
log...
>> 译者注:一般单纯用作loghost的机器比较难hack,因为它往往关掉了几乎所有端口,并且只
>> 允许从控制台登录.对于这样的机器,可以用DoS攻击使之瘫痪,从而失去log功能.(要hack
>> 往往比较难,要crash it则相对容易一些.;-)当然,本次登陆的记录仍然会被保存下来.
为了处理logs,你可以用"grep -v"或者用wc统计行数后,再用"tail -10 log"察看最后10行
,或者用编辑器vi,emcas.
>> 译者注:如果你从a.b.c来,你可以用grep -v "a.b.c" logfile>logtemp;mv logtemp logfile;
>> 来清除所有含有a.b.c的行.如果log文件比较大,你也可以用vim来编辑.
>> 注意这只能用来修改文本文件!!!对二进制文件的修改可能导致文件格式被破坏!!!
如果数据文件是二进制格式的,你应当首先查明它是由什么软件产生的,然后设法找到该软件
的源码,分析记录项的结构,自己编程修改记录.(可以利用现成的程序加以修改,比如Zap,clear
cloak...).
如果系统安装了accounting软件.你可以用zhart写的acct-clener---它非常有效!
如果你必须修改wtmp,但系统又不能编译源程序也没有perl....你可以这样做,先uuencode
wtmp,然后运行vi,移动到最后一行,删除最后以"M"开头的4行...然后保存退出.uudecode
.然后最后5个wtmp记录项就被删除了.;-) 注意这只在SCO unix下有效,linux下是不行的.
>> 译者注:我没有验证这个,因为没有SCO服务器.如果你要这么做,记得要先做个wtmp的备份.
如果系统用wtmpx和utmpx,那你又有麻烦了..迄今我还不知道有哪个cleaner程序可以处理
它们.你不得不自己编一个程序来完成工作.
>> 译者注:wtmpx和utmpx结构与wtmp和utmp类似,只要将清除utmp和wtmp的软件略加修改就可
>> 以了.而且现在已经不少现成的程序可以修改utmpx/wtmpx了.
* 4. 检查SYSLOG配置和记录 *
大部分程序都用syslog函数来记录它们需要的所有东西.因而检查syslogd的配置文件是
很重要的.
这个配置文件是/etc/syslog.conf - 我不会告诉你它的格式是什么/每一项是什么意思,
自己去读它的man页.
对你来说重要的syslog类型是kern.*,auth.*和authpriv.*.看看它们被写到哪里了,如
果写到文件里还可以修改.如果被转发到其他主机,你必须也要hack它们.如果消息被发给
某个用户,tty或者控制台.你能耍点小花招发很多个假消息象"echo 17:04 12-05-85 kernel
sendmail[243]: can't resolve bla.bla.com > /dev/console"(或其他你想flood的
的设备),让它卷屏,以隐藏你引发的信息.这些log文件是非常非常重要的!检查它们!
* 5. 检查已经安装的安全程序 *
很多注重安全的站点都通过cron运行安全检查程序.crontabs通常在/var/spool/cron/crontabs.
检查里面所有的文件,特别是"root"文件,检查它里面都运行了什么程序.用"crontab -l root"可以
快速的检查root crontab的内容.
这些安全工具往往装在管理员的目录下比如~/bin.
这些检查软件可能是 tiger, cops, spi, tripwire, l5,binaudit, hobgoblin, s3 等等...
你必须检查它们都报告了些什么东西,看它们是否报告了一些显示出你入侵迹象的东西.
如果是的话,你可以 - 更新软件的数据文件,是它们不再报告这种类型的消息.
- 可以重新编程或修改该软件使它们不再产生报告.
- 如果可能的话,删除你安装的后门或其他程序,并试着用其他的方法来完成
* 6. 检查系统管理员 *
对你来说了解系统管理员采取了那些安全措施是非常重要的.因此你需要知道他们经常使用哪些
普通用户帐号.
你可以检查root的.forward文件和alias内容.看看sulog文件,注意那些成功su成root的
用户.检查group文件中的wheel和admin组(或者其他任何与管理员相关的组).你也可以在
passwd文件中查找admin,也许你又能找到一个管理员帐号.
现在你应该已经知道这台机器上谁是管理员了.进入他们的目录(如果系统不允许root读所有
的文件,用chid.c或者changeid.c将自己的uid变成该用户的),检查他们的.history/.sh
_history/.bash_history文件看看他们经常执行什么命令.也应当检查他们的.profile/.
login/.bash_profile文件看看里面都设置了什么alias,是否执行了什么自动安全检查或
logging程序.也检查他们的~/bin目录!大多数情况下被编译的安全程序被放到那里面!当然
也要看一下他们的每一个目录(ls -alR ~/).
如果你找到任何与安全有关的东西,请读5小节以设法绕过它们的安全保护.
* 7. 怎样修正checksum检查软件 *
一些管理员真得很怕hacker所以装了一些软件来检查二进制文件.如果一个二进制文件被
改动了,下次管理员做二进制检查的时候,它将被检测到.
那么你怎么找到是否系统安装了这样的程序,又怎样修改它们以便你能植入你的木马程序呢?
注意有很多的二进制检查程序,而且要写一个也真是非常容易(15分钟就够了),你可以用一个
小的script完成这个工作.所以如果这样的软件被安装的话要找到它们是比较困难的.注意
有些常用安全检查程序也提供这样的检查.下面是一些应用得很广泛的软件:
软件名 标准路径 二进制文件名
tripwire : /usr/adm/tcheck, /usr/local/adm/tcheck : databases, tripwire
binaudit : /usr/local/adm/audit : auditscan
hobgoblin : ~user/bin : hobgoblin
raudit : ~user/bin : raudit.pl
l5 : 编译所在目录 : l5
你要明白有很多种可能!这软件或数据库甚至可能放在一个正常情况下不被mount的盘上或
者在其他主机export的NFS分区上.也可能checksum数据库是储存在一个写保护的介质上的.
各种可能性都有!但一般情况下你只要检查上述软件是否被安装就可以了,如果没有的话,你就
可以改变某些二进制文件.如果你没有找到那些软件,但你又知道这是一个进行了完善安全保
护的站点的话,你就不应该改变二进制文件!它们(二进制检查软件)肯定被藏在什么地方了.
如果你发现了这种软件被安装并且你可以修改它们(比如不是放在只读介质上,或者可以通过
一些办法绕过限制 - 比如umount该盘然后重新mount成可写的)的话,你该怎么做呢?
你有两种选择:
首先你可以只检查软件的参数,然后对已经修改过的二进制文件执行一次"update"检查.
比如用tripwire的话你可以执行" tripwire -update /bin/target ".
第二种办法是你可以编辑要被检查的二进制文件名单 - 从中删除你改动过的二进制文件名.
注意你也应当看看是不是连数据库文件自身也会被检查!如果是的话 - 先update再删除
数据库文件名.
* 8. 注意某些用户的安全陷阱(诡计?) *
这种情况较少发生,这里提出来主要是为了讨论的更完全.
一些用户(可能是管理员或者hacker)通常不象他自己的帐户被别人使用.所以他们有时候
会在他们的启动文件里采取一点安全措施.
所以要检查所有的以"."开头的文件(.profile,.cshrc,.login,.logout 等等),看看
他们执行了什么命令,记录了些什么东西,以及他们的搜索路径是怎么摄制的.如果某个目录
(比如$HOME/bin)出现在/bin的前面,你就应该检查一下那个目录的内容了...也许里面装
了个程序"ls"或者"w",它会先记录被执行的时间然后再执行真正的程序
也许还有些程序用来自动检查wtmp和lastlog文件是否被zap处理过,检查.rhosts,
.Xauthority文件,或是否有sniffer正在运行...
千万不要使用一个unix高手的帐号!
* 9. 其他 *
最后,在讨论受怀疑或被捕的话题之前,还有一些其他的事情值得引起注意.
老的telnet client会export USER变量.一个了解这一点的系统管理员可以编辑telnetd
,从而得到所有(通过telnet登录进来的)用户名.一旦他注意到你,他就可以很容易的得知你
是从(远方主机的)哪个帐号hack进来的.新的client(客户端程序)已经解决了了这一问题 -
但是一个聪明的管理员仍然可以得到其他的信息以鉴别用户:UID,MAIL,HOME变量,这些变量
仍然被export,这就可以很容易得鉴别 hacker使用的是哪个帐户.因此在你进行telnet前,
记得要改变USER,UID,MAIL和HOME变量,如果你正处在home目录下的话也许甚至要改变PWD变
量.
在HP Unix(版本低于v10)中你可以建立隐藏目录.我不是说那些以"."开头的目录而是
一些有特殊标志的目录.HP在v9版推出了它,但从v10版本以后就去除了(因为只有hacker
才是用它 ;-).
如果你执行"chmod +H directory",则directory目录就不能用"ls -al"列出.为了看
这个隐藏目录,你需要为ls增加 -H 参数,例如:"ls -alH".
无论什么时候,当你需要改变文件的日期时,记住你能用"touch"命令设置atime和mtime.
你只能通过直接的硬盘读写来设置ctime.
如果你在一个重要系统中安装了sniffer,一定要加密sniffer的输出或者让sniffer通过
icmp或者udp将所有被截获的数据发送到一个由你控制的外部主机.为什么要这样做?因为
这样即使管理员发现了sniffer(通过cpm或其他检查sniffer存在的程序),他们也不能从
sniffer log中得知哪些东西被sniff了,所以他也不能即使提醒正被你sniff的主机.
V. 当你被怀疑时...
----------------------------------------------------------------------
一旦你受到怀疑(被警察或是系统管理员)你应该采取些特别的行动是他们不能得到不利你的
证据.
注意 : 如果系统管理员认为你是个hacker,
你就是有罪的直到你被证明是无辜的!
这些管理员根本不理会什么法律(有时候我认为hacker与管理员的不同仅仅在于那台计算机
属于管理员而已).当他们认为你是个hacker的时候,你就是有罪的,没有律师为你辩护.他们
会监视你,你的邮件,文件,甚至记录你的键盘(如果他们够利害的话).
当警察被牵扯进来的时候,你的电话线也可能被监听,搜捕行动也许跟着就来了.
如果你注意到你正受到怀疑,一定要保持低调!不要采取任何攻击性行动!
最好是等上至少1到2个月,什么都不做.
警告你的朋友不要给你发任何邮件,或者只发一些正常的/无害的邮件.如果你突然采用 PGP加密
邮件,这会提醒正在监视的警察和管理员---你发现他们的监视了.切断与hacking有关的联系,
写点儿文章或者编编程序,一直等到一切都过去.及主要加密你的敏感数据,销毁所有记有帐号
数据,电话号码等等的纸张.当警察搜捕你的时候,那些东西是他们要找的最重要的东西.
VI. 被捕
----------------------------------------------------------------------
Note that this small chapter covers only the ethics and basics and
hasn't got any references to current laws - because they are different
for every country.
Now we talking about the stuff you should/shouldn't do once the feds
visited you. There are two *very* important things you have to do :
1) GET A LAWYER IMMEDEANTELY !
The lawyer should phone the judge and appeal against the search
warrant. This doesn't help much but may hinder them in their work.
The lawyer should tell you everything you need to know what the
feds are allowed to do and what not.
The lawyer should write a letter to the district attorney and/or
police to request the computers back as fast as possible because
they are urgently needed to do business etc.
As you can see it is very useful to have got a lawyer already
by hand instead of searching for one after the raid.
2) NEVER TALK TO THE COPS !
The feds can't promise you anything. If they tell you, you'll get
away if you talk, don't trust them! Only the district attorney
has got the power to do this. The cops just want to get all
information possible. So if you tell them anything they'll have
got more information from and against you.
You should *always* refuse to give evidence - tell them that you
will only talk with them via your lawyer.
Then you should make a plan with your lawyer how to get you out of this
shit and reduce the damage.
But please keep in mind : don't betray your friends. Don't tell them
any secrets. Don't blow up the scene.
If you do, that's a boomerang : the guys & scene will be very angry
and do revenge, and those guys who'll be caught because of your
evidence will also talk ... and give the cops more information about
*your* crimes!
Note also that once you are caught you get blamed for everything which
happened on that site. If you (or your lawyer) can show them that they
don't have got evidences against you for all those cases they might
have trouble to keep the picture of that "evil hacker" they'll try to
paint about you at the court. If you can even prove that you couldn't
do some of the crimes they accuse you for then your chances are even
better. When the judge sees that false accuses are made he'll suspect
that there could be more false ones and will become distrusted against
the bad prepared charges against you.
I get often asked if the feds/judge can force you to give up your
passwords for PGP, encrypted files and/or harddisks.
That's different for every country. Check out if they could force you
to open your locked safe.
If that's the case you should hide the fact that you are crypting your
data! Talk with your lawyer if it's better for you to stand against
the direction to give out the password - maybe they'd get evidences
which could you get into jail for many years.
(For german guys : THC-MAG #4 will have got an article about the german
law, as far as it concerns hacking and phreaking - that article will
be of course checked by a lawyer to be correct. Note that #4 will only
discuss germany and hence will be in the german language.
But non-germans, keep ya head up, this will be the first and last german
only magazine release ;-)
>>译者注:这一节是讲述了如果被捕,应当做些什么.由于我们的法律和西方不同,所以我就不翻了.有
>>兴趣的可以自己看一看.主要的两点就是:1.马上找到一个律师为你处理这一切.2.不要告诉警察任
>>何东西,也不要出卖其他人.
VII. 有用的程序
----------------------------------------------------------------------
这里有一个你应该找到并使用的程序列表.不要给我发email问我在哪里找到它们 - 自己到
hacker世界中去找!我只列出了最好的log编辑程序(见III-4和IV-3).
其他有趣的程序还有telnet重定向程序(见IV-2),但这种程序有很多,大部分只能在1-3种
unix类型下编译,所以列表没什么用.
先节是以下几个术语:
改变 - 将logfile中的域改成你喜欢的任意内容
删除 - 删除你要求的记录项
编辑 - 真正的logfile编辑器.
重写 - 只用0字节来重写记录.
不要用这样的软件(e.g. zap) - 它能被检测到!
LOG 修改器
ah-1_0b.tar 改变记帐信息的记录
clear.c 删除utmp,wtmp,lastlog和wtmpx中的记录
cloak2.c 改变utmp,wtmp和lastlog中的记录.
invisible.c 用预设值重写utmp,wtmp和lastlog
所以它比zap更好.注意看,有好多inv*.c!
marryv11.c 编辑utmp, wtmp, lastlog 和 accounting 数据 - 最好的!
wzap.c 删除wtmp中的记录
wtmped.c 删除wtmp中的记录
zap.c 重写utmp, wtmp, lastlog - 不要用它!它会被检测到!
VIII. 最后的话
----------------------------------------------------------------------
最后的话:
不要被捕,记住这些技巧.
如果有人想更正一些错误或者发表一些意见,或对某个话题需要更多的信息,甚至认为我遗漏了
一些东西 - 请让我知道