如何隐藏你的踪迹
时间:2007-02-17 来源:PHP爱好者
第一章 理论篇
I. 概述
II. 思想认识(MENTAL)
III. 基础知识
IV. 高级技巧
V. 当你受到怀疑时...
VI. 被捕
VII. 有用的程序
VIII. 最后的话
I. 概述
----------------------------------------------------------------------
>> 译者注:本文是德国著名hacker组织"The Hackers Choice"的96年写的一篇文章,
>> 但今天读来仍颇有收获,就象他自己说的:"即使是一个很有经验的hacker也能从这
>> 里学到一些东西".在翻译的过程中对原文做了一些改动,也加入了一些自己的理解,
>> 不当之处,还请赐教.
>>
注意 : 本文分为两部分.
第一部分讲述了一些背景和理论知识.
第二部分通过具体的实例教你一步一步了解该做什么和不该做什么.
如果你懒得看完全部文章,那就只读第二部分吧.它主要是写给那些
Unix hack新手看的.
如果你把尽快得到最新的exploits当成最重要的事的话,那我要说-你错了.
>> 译者注:exploits可以理解为"漏洞",不过我并不想这么翻,翻过来总感觉怪
>> 怪的,所以我还是保留了原文.文中还有一些地方也是如此处理,不再一一注明
一旦警察没收了你的计算机、你的所有帐户都被取消、你的一切活动都被监视
的时候,即便是最好的exploit对你又有什么用呢?
我不想听那些辩解的话.
不,最重要的事应该是不要被捕!
这是每个hacker都应该明白的第一件事.因为在很多情况下,特别是当你首次
hack一个由于饱受入侵之苦而开始对系统安全敏感的站点时,你的第一次hack
也许就将成为你最后一次hack.
所以请仔细阅读所有章节!
即使是一个很有经验的hacker也能从中学到一些东西.
下面是各节的简介:
节 I - 你现在正在读的
节 II - 思想认识
1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
节 III - 在你开始hack前应当知道的基本知识
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
节 IV - 你该了解的高级技巧
1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
节 V - 一旦你受到怀疑你该怎么做
节 VI - 当你被捕时该做的与不该做的
节 VII - 一些用于隐藏痕迹的程序的列表
节 VIII- 最后的话,作者想说的一些废话
请仔细阅读,开动脑筋.
II. 思想认识(MENTAL)
>> 译者注:这一节的目的主要是提醒你树立正确的"hack"观 ;)
----------------------------------------------------------------------
内容: 1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
>> 译者注:paranoid的意思是"患偏执狂的",在这里可能是当
>> "小心谨慎"来讲吧.
* 1. 动机 *
不管做什么事,信念总是取得成功的一个关键.
它是你的动力源泉,它激发你去奋斗,自我约束,小心谨慎而又面对现实,准确的估
计风险,它也能让你去做你不喜欢做但又非常重要的事情(即使你现在就想去游泳).
如果你不激励自己去编制重要工具,等候恰当的时机去攻击目标,那你永远不
能成为真正的hacker.
一个成功而又优秀的hacker必须满足这些要求.它就象健身和节食---如果你
真正努力去做,你就能成功.
* 2. 为什么你必须要谨慎 *
当然,小心谨慎并不会让你的生活变得更幸福.
然而如果你从不做最坏的打算,任何事情都能击倒你,让你失去平衡.你正在做的
事会让你冒很大风险.而在你正常的生活中你并不需要担心警察,小偷什么的.但
如果你从另一方面考虑,你要知道你正在给别人的生活带来麻烦和恶梦--他们很
想阻止你.
尽管你不认为这是犯罪.但当警察迅速逮捕每个可能被牵扯的人时,你会发现一件
很悲惨的事:你是有罪的除非你能证明你无罪!
一旦你得到了一个hacker的"污名",你就永远不能将其去除.一旦你有了犯罪纪录,
你将很难找到一份工作.特别是没有软件公司甚至没有与计算机有关的公司会聘用
你,他们会害怕你的技术.你也许不得不移民...
一旦跌倒了,能再爬起来的只是少数人.
要小心谨慎!
要保护好你自己!
记住你得到的一切都可能失去!
绝不为做额外的反跟踪工作而感到愚蠢!
绝不为如果别人嘲笑你太谨慎而烦心!
决不要因为太懒或者厌倦而放弃修改log文件!
一名hacker必须%100的完成他的"工作"!
* 3. 怎样才能小心谨慎 *
如果你读了上面的话并且你认为那是对的,那就容易了---你已经变得小心谨慎了
但这必须要变成你生活中的一部分才行,当你总是考虑究竟是谁告诉你了那些事,
考虑你的电话和email可能已被监视的时候,那它已经变成你生活的一部分了.
如果上面这些还不能帮你,那么考虑一下如果你被捕会发生什么.
你的女友还会站在你这边吗?你想看到你父母为你流泪吗?你想丢掉饭碗
或学业吗?
不要给这一切以发生的机会!
如果这还不能警醒你:
离HACKING远点儿!!!
对整个hacker社会和你的朋友来说,你都是个危险人物!
* 4. 保持谨慎 *
我希望现在你明白为什么小心谨慎的重要性了.
所以保持谨慎.一个错误或者一次偷懒都可能彻底毁掉你的生活和事业.
在做一件事时应时刻记着你的动机是什么.
>> 译者注:这部分是让你知道你正在干什么及你的处境.如果你不想让你成为无聊
>> 记者津津乐道的话题---"某地破获重大黑客案...",那就多看看,多想想.要知
>> 道,自己是这种新闻的主角和看别人的新闻可完全不是一个感觉.
>> 所以要:谦虚谨慎,戒骄戒躁 :-)
III. 基础知识
----------------------------------------------------------------------
内容 :
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
* 1. 前言 *
在你开始你的初次hack之前,你应当知道这些并且进行些练习.这些都是非常基本
的,不知道这些你很快就会有麻烦了.即便是一名很有经验的hacker也能从中得到
一些新的提示.
* 2. 自身安全 *
系统管理员读了你的email吗?
你的电话被警察监听了吗?
警察没收了你存有所有hacking数据的计算机吗?
如果你不接收可疑的email,不在电话里谈论hacking/phreaking的话题,在你的硬盘
上也没有敏感和私人数据的话,那你不必担心上面那些情景.但那样你就并不是一个
hacker.每个hacker和phreaker都与其他人保持联系并把他的数据保存在某个地方.
加密所有敏感数据!!!
在线硬盘加密程序是非常重要和有用的:
在internet上游很多好的免费硬盘加密程序,它们对你的操作系统来说是完全
透明的.下面所列的几个软件都是经过测试的,是hackers的首选工具:
- 如果你用MsDos,你可以使用SFS v1.17或者SecureDrive 1.4b
- 如果你用Amiga,你可以使用EnigmaII v1.5
- 如果你用Unix,你可以使用CFS v1.33
>> 译者注:在win9x下可以考虑emf,iprotect...
文件加密软件: 你可以使用任何一种加密软件,但它应该是使用一种众所周知的
安全加密机制.绝对不要用那些被出口的加密程序,它们的有效密钥长度被缩短了!
- Triple DES
- IDEA
- Blowfish (32 rounds)
加密你的Email!
- PGP v2.6.x 是个不错的工具.
如果你想讨论重要的事情的话,加密你的电话.
- Nautilus v1.5a 是迄今最好的
当你连到一个unix系统时加密你的终端.
一些人可能正在sniffing或者监视你的电话线:
- SSH 是最安全的
- DES-Login 也不错
>> 译者注:- SSL 基于SSL的一些软件也可以一试
用强壮的不可猜测的,不在任何字典中的密码.它应当看起来象随机的但又容易记
忆.如果密码长度可以比10个字符更长,那就用更长的.可以从书中抽取一句话,并
略作修改.请将你的hacker朋友的电话号码加密两遍.如果你不加密,你应当从公用
电话给他打电话.
>> 译者注:其实有个好记又难猜的密码并不难,例如考虑句子"Im a haxor!"可以从中抽
>> 取几个单词组成Imhaxor,好象没有数字,呵呵,用"eleet"的hacker语言,haxor=h4x0r
>> 所以我们的口令可以是:Imh4x0r(我是hacker).这样的密码恐怕只能用暴力破解了.
如果你对hacking有了深入了解,你应当加密所有的东西!
为你的数据做个备份,当然要先加密,把它放在一个隐秘的地方,最好不要在家里.
所以即使你因为失误,火灾或警察搜捕等原因丢失了数据,你还可以得到备份数据.
只有当你真的需要它们时才写出来,否则将它们放在一个机密文件或加密分区里更
安全.一旦你不需要它们了,烧掉那些纸.你也可以用只有你自己知道的加密机制将
它们写下来,但不要告诉任何人,也别太经常的使用它.也许它很容易被分析和破解
真正沉稳和谨慎的hackers应该考虑实施干扰方案.警察,间谍,其他hacker能监视你
的举动.一个拥有先进设备的人可以获得他想要的任何东西:
计算机发射的电子脉冲可以从100米以外的距离被截获,可以显示你的监视器屏幕,
监听你的私人谈话,确认键盘敲击时的高频信号等等...所以各种可能性总是存在的.
成本低廉的应付方法就是采用电子脉冲干扰发射机,商店里就有卖的.如果你不想让
>> 译者注:不知道我们的商店里有没有卖的.;-)
任何人监视你,我认为这些还不够...
* 3. 你自己的帐户 *
下面让我们谈谈你自己的帐户.它就是你在学校/公司/ISP那里得到的帐户,它
总是与你的真实姓名联系在一起,所以在使用它时绝对不要违背下面的原则:
永远不要用你的真实帐户做任何非法或者惹人怀疑的事!
永远不要试图从你的真实帐户telnet到任何被hacked主机去!
当然可以用这个帐号订阅安全mailing lists.
但任何与hacking有关的东西都必须加密或者立刻销毁.
决不要在你帐号下保存hacking或security工具.
尽量用POP3连到你的mailserver下载或者删除你的邮件(如果你对unix比较熟悉,
还可以直接telnet到POP3端口执行下载或者删除命令).
决不要泄漏你的真实email给你不信任的人,只把它给你信任的人,他们也应当是比较
注意安全问题的人,否则如果他们被捕,下一个就是你了(或许他们根本就是警察,而不
是hacker.).
与其他的hacker用email交流时必须要用PGP加密,因为系统管理员经常偷看用户目录,
甚至读区别人的email!!其他的hacker也可能hack你们的站点并试图得到你的数据.
绝不要用你的帐号表明你对hacking感兴趣!
对安全感兴趣可以,但不要再进一步了.
>> 译者注:与别人交流时可以申请免费信箱,最好是国外的,比如hotmail之类,登陆时注意最好
>> 通过proxy.自己的真实信箱应当只用来进行一般的正常通信,与朋友/老师/同事...
* 4. LOG文件 *
有三个重要的log文件:
WTMP - 记录每次登录的信息,包括登陆/退出的时间,终端,登录主机ip
UTMP - 在线用户记录
LASTLOG - 记录用户上次是从哪里登录的
当然还有其他的log,它们将在"高级技巧"一节种讨论.每次通过telnet,ftp,rlogin,rsh
的登录都会被记录到这些文件中.如果你正在hacking,把自己从这些记录中删除就是很
重要的了.否则他们会:
a) 准确的发现你什么时候在搞hacking活动
b) 发现你从那个站点过来
c) 知道你在线的时间有多长,以便计算你给他们造成的损失
绝对不要删除这些log文件!!!那等于通知管理员:"嗨,你的机器上有个hacker!".找一个
好程序来修改这些log.ZAP(或ZAP2)经常被认为是最好的但事实上它并不是.它只是简单
的用0来填充用户上次登陆的数据段.CERT已经发布了一个简单的程序用来检查这些全零
数据项.所以这样也会很容易就让人知道现在有个hacker在活动,这样你所有的工作就没
有意义了.ZAP的另外一个缺陷是当它找不到那些log文件时,它并不报告.所以在编译之前
必须先检查一下路径!你应该使用能改变记录内容的程序(象cloark2.c)或者能真正删掉
记录的程序(象clear)
>> 译者注: THC提供的cleara.c ,clearb.c是非常好用的清除工具.可以清除
>> utmp/utmpx,wtmp/wtmpx,修复lastlog让其仍然显示该用户的上次登录信息(而不
>> 是你登录的信息).如果你发现你登录后没有显示上次登录信息,那很可能你的机器
>> 可能已经被人hack了,当然,即使显示正确的信息也未必就没有被hack.;-)
一般来说要修改log你必须是root(有些老版本系统例外,它们将utmp/wtmp设成允许所有人可写)但
如果你不能得到root权限---你该怎么做呢?
你应该rlogin到你现在所处的主机,以便在lastlog种增加一个不是那么惹人怀疑的数据项,它将在
该用户下次登录时被显示,如果他看到"上次从localhost登录"的信息时也许不会怀疑.
>> 译者注:这也是没有办法的办法,换了我,我就会怀疑.;)
很多unix系统的login命令有一个bug.当你登录以后再执行一遍login命令时,它将
用你当前的终端重写UTMP中的login from段(它显示你是从哪里来的!)
那么这些log文件缺省在什么地方呢?
这依赖于不同的Unix版本.
UTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
WTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
LASTLOG : /usr/var/adm 或 /usr/adm 或 /var/adm 或 /var/log
在一些旧unix版本中lastlog数据被写到$HOME/.lastlog
* 5. 不要留下痕迹 *
我曾经碰到很多hacker,他们把自己从log里删除了.但他们忘记删掉他们在机器中留下
的其他一些东西:在/tmp和$HOME中的文件
Shell 记录
一些shell会保留一个history文件(依赖于环境设置)记录你执行的命令.这对hacker来
说确实是件很糟糕的事.
最好的选择就是当你登录以后先启动一个新shell,然后在你的$HOME中查找历史纪录.
历史记录文件:
sh : .sh_history
csh : .history
ksh : .sh_history
bash: .bash_history
zsh : .history
>> 译者注:.*history是我最喜欢看的文件之一,通过它你可以了解root或用户常干些什么,
>> 从而得知他们的水平如何,如果他们只会执行"ls","pwd","cp"...那说明水平不过尔尔,无须
>> 太担心.不过如果你发现root喜欢"find / -type f -perm -04000 -exec ls -al {} ;","
>> "vim /var/adm/messages","ps -aux( -elf) ","netstat -an"....那你就要小心一点了
备份文件 :
dead.letter, *.bak, *~
在你离开前执行一下"ls -altr"看看你有没有留下什么不该留下的东西.
你可以敲4个csh命令,它能让你离开时删掉这些历史文件,不留下任何痕迹.
mv .logout save.1
echo rm .history>.logout
echo rm .logout>>.logout
echo mv save.1 .logout>>.logout
>> 译者注:对于bash,有一个简单的办法就是执行一下"HISTFILE=",就是不设置bash的历史文件,
>> 这样就不会有讨厌的.bash_history了.(准确地说,是不会往$HOME/.bash_history里写了)
>> 或者退出的时候简单的敲kill -9 0 ,它会杀掉这次登录后产生的所有进程,bash也不会往.bash
>> _history里写
* 6. 你应当避免的事 *
不要在不属于你的机器上crack口令.如果你在别人(比如说一所大学)的机器上破解口令,
一旦root发现了你的进程,并且检查它.那么不仅你hacking的帐号保不住了,可能连你得
到的那passwd文件也没了.那学校将会密切注视你的一举一动...
所以得到口令文件后应该在自己的机器上破解.你并不需要破解太多的帐号,能破出几个就
够了.
如果你运行攻击/检测程序象ypx,iss,satan或其他的exploiting程序,应当先改名再执行它们.
或者你可以修改源码改变它们在进程列表中显示的名字...
>> 译者注:这并不难,你只要在main()中将argv[]用你喜欢显示的名字替代就可以了比如argv[0]
>> ="in.telnetd",argv[1]=""...(当然必须在程序已经从argv中读取了所需的参数之后).
如果某个细心的用户/root发现5个ypx程序在后台运行,他马上就会明白发生了什么.
当然如果可能的话不要在命令行中输入参数.如果程序支持交互方式,象telnet.
应当先敲"telnet",然后"o target.host.com"...这就不会在进程表中显示目标主机
名.
>> 译者注:如果你用ftp,最好这样做:
>> $ ftp -n
>> $ ftp>o target.host
>> blahblah...(一些连接信息)
>> blahblah...(ftp server版本)
>> ftp>user xxx
>> ....
如果你hack了一个系统---不要在任何地方放suid shell!
最好装一些后门象(ping,quota或者login),用fix来更正文件的atime和mtime.
>> 译者注: 放suid shell是很蠢的,非常容易被root发现.
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 编写,用来提供被进程打开的文件的信息,
>> 它的最新版本可以在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]: cant 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变
量.
php爱好者站 http://www.phpfans.net PHP|MySQL|javascript|ajax|html.
I. 概述
II. 思想认识(MENTAL)
III. 基础知识
IV. 高级技巧
V. 当你受到怀疑时...
VI. 被捕
VII. 有用的程序
VIII. 最后的话
I. 概述
----------------------------------------------------------------------
>> 译者注:本文是德国著名hacker组织"The Hackers Choice"的96年写的一篇文章,
>> 但今天读来仍颇有收获,就象他自己说的:"即使是一个很有经验的hacker也能从这
>> 里学到一些东西".在翻译的过程中对原文做了一些改动,也加入了一些自己的理解,
>> 不当之处,还请赐教.
>>
注意 : 本文分为两部分.
第一部分讲述了一些背景和理论知识.
第二部分通过具体的实例教你一步一步了解该做什么和不该做什么.
如果你懒得看完全部文章,那就只读第二部分吧.它主要是写给那些
Unix hack新手看的.
如果你把尽快得到最新的exploits当成最重要的事的话,那我要说-你错了.
>> 译者注:exploits可以理解为"漏洞",不过我并不想这么翻,翻过来总感觉怪
>> 怪的,所以我还是保留了原文.文中还有一些地方也是如此处理,不再一一注明
一旦警察没收了你的计算机、你的所有帐户都被取消、你的一切活动都被监视
的时候,即便是最好的exploit对你又有什么用呢?
我不想听那些辩解的话.
不,最重要的事应该是不要被捕!
这是每个hacker都应该明白的第一件事.因为在很多情况下,特别是当你首次
hack一个由于饱受入侵之苦而开始对系统安全敏感的站点时,你的第一次hack
也许就将成为你最后一次hack.
所以请仔细阅读所有章节!
即使是一个很有经验的hacker也能从中学到一些东西.
下面是各节的简介:
节 I - 你现在正在读的
节 II - 思想认识
1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
节 III - 在你开始hack前应当知道的基本知识
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
节 IV - 你该了解的高级技巧
1. 前言
2. 阻止任何跟踪
3. 找到并处理所有的log文件
4. 检查syslog设置和log文件
5. 检查安装的安全程序
6. 检查系统管理员
7. 怎样修正checksum检查软件
8. 注意某些用户的安全陷阱(诡计?)
9. 其他
节 V - 一旦你受到怀疑你该怎么做
节 VI - 当你被捕时该做的与不该做的
节 VII - 一些用于隐藏痕迹的程序的列表
节 VIII- 最后的话,作者想说的一些废话
请仔细阅读,开动脑筋.
II. 思想认识(MENTAL)
>> 译者注:这一节的目的主要是提醒你树立正确的"hack"观 ;)
----------------------------------------------------------------------
内容: 1. 动机
2. 为什么你必须要谨慎(paranoid)
3. 怎样才能谨慎
4. 保持谨慎
>> 译者注:paranoid的意思是"患偏执狂的",在这里可能是当
>> "小心谨慎"来讲吧.
* 1. 动机 *
不管做什么事,信念总是取得成功的一个关键.
它是你的动力源泉,它激发你去奋斗,自我约束,小心谨慎而又面对现实,准确的估
计风险,它也能让你去做你不喜欢做但又非常重要的事情(即使你现在就想去游泳).
如果你不激励自己去编制重要工具,等候恰当的时机去攻击目标,那你永远不
能成为真正的hacker.
一个成功而又优秀的hacker必须满足这些要求.它就象健身和节食---如果你
真正努力去做,你就能成功.
* 2. 为什么你必须要谨慎 *
当然,小心谨慎并不会让你的生活变得更幸福.
然而如果你从不做最坏的打算,任何事情都能击倒你,让你失去平衡.你正在做的
事会让你冒很大风险.而在你正常的生活中你并不需要担心警察,小偷什么的.但
如果你从另一方面考虑,你要知道你正在给别人的生活带来麻烦和恶梦--他们很
想阻止你.
尽管你不认为这是犯罪.但当警察迅速逮捕每个可能被牵扯的人时,你会发现一件
很悲惨的事:你是有罪的除非你能证明你无罪!
一旦你得到了一个hacker的"污名",你就永远不能将其去除.一旦你有了犯罪纪录,
你将很难找到一份工作.特别是没有软件公司甚至没有与计算机有关的公司会聘用
你,他们会害怕你的技术.你也许不得不移民...
一旦跌倒了,能再爬起来的只是少数人.
要小心谨慎!
要保护好你自己!
记住你得到的一切都可能失去!
绝不为做额外的反跟踪工作而感到愚蠢!
绝不为如果别人嘲笑你太谨慎而烦心!
决不要因为太懒或者厌倦而放弃修改log文件!
一名hacker必须%100的完成他的"工作"!
* 3. 怎样才能小心谨慎 *
如果你读了上面的话并且你认为那是对的,那就容易了---你已经变得小心谨慎了
但这必须要变成你生活中的一部分才行,当你总是考虑究竟是谁告诉你了那些事,
考虑你的电话和email可能已被监视的时候,那它已经变成你生活的一部分了.
如果上面这些还不能帮你,那么考虑一下如果你被捕会发生什么.
你的女友还会站在你这边吗?你想看到你父母为你流泪吗?你想丢掉饭碗
或学业吗?
不要给这一切以发生的机会!
如果这还不能警醒你:
离HACKING远点儿!!!
对整个hacker社会和你的朋友来说,你都是个危险人物!
* 4. 保持谨慎 *
我希望现在你明白为什么小心谨慎的重要性了.
所以保持谨慎.一个错误或者一次偷懒都可能彻底毁掉你的生活和事业.
在做一件事时应时刻记着你的动机是什么.
>> 译者注:这部分是让你知道你正在干什么及你的处境.如果你不想让你成为无聊
>> 记者津津乐道的话题---"某地破获重大黑客案...",那就多看看,多想想.要知
>> 道,自己是这种新闻的主角和看别人的新闻可完全不是一个感觉.
>> 所以要:谦虚谨慎,戒骄戒躁 :-)
III. 基础知识
----------------------------------------------------------------------
内容 :
1. 前言
2. 自身安全
3. 自己的帐户
4. log文件
5. 不要留下痕迹
6. 你应当避免的事
* 1. 前言 *
在你开始你的初次hack之前,你应当知道这些并且进行些练习.这些都是非常基本
的,不知道这些你很快就会有麻烦了.即便是一名很有经验的hacker也能从中得到
一些新的提示.
* 2. 自身安全 *
系统管理员读了你的email吗?
你的电话被警察监听了吗?
警察没收了你存有所有hacking数据的计算机吗?
如果你不接收可疑的email,不在电话里谈论hacking/phreaking的话题,在你的硬盘
上也没有敏感和私人数据的话,那你不必担心上面那些情景.但那样你就并不是一个
hacker.每个hacker和phreaker都与其他人保持联系并把他的数据保存在某个地方.
加密所有敏感数据!!!
在线硬盘加密程序是非常重要和有用的:
在internet上游很多好的免费硬盘加密程序,它们对你的操作系统来说是完全
透明的.下面所列的几个软件都是经过测试的,是hackers的首选工具:
- 如果你用MsDos,你可以使用SFS v1.17或者SecureDrive 1.4b
- 如果你用Amiga,你可以使用EnigmaII v1.5
- 如果你用Unix,你可以使用CFS v1.33
>> 译者注:在win9x下可以考虑emf,iprotect...
文件加密软件: 你可以使用任何一种加密软件,但它应该是使用一种众所周知的
安全加密机制.绝对不要用那些被出口的加密程序,它们的有效密钥长度被缩短了!
- Triple DES
- IDEA
- Blowfish (32 rounds)
加密你的Email!
- PGP v2.6.x 是个不错的工具.
如果你想讨论重要的事情的话,加密你的电话.
- Nautilus v1.5a 是迄今最好的
当你连到一个unix系统时加密你的终端.
一些人可能正在sniffing或者监视你的电话线:
- SSH 是最安全的
- DES-Login 也不错
>> 译者注:- SSL 基于SSL的一些软件也可以一试
用强壮的不可猜测的,不在任何字典中的密码.它应当看起来象随机的但又容易记
忆.如果密码长度可以比10个字符更长,那就用更长的.可以从书中抽取一句话,并
略作修改.请将你的hacker朋友的电话号码加密两遍.如果你不加密,你应当从公用
电话给他打电话.
>> 译者注:其实有个好记又难猜的密码并不难,例如考虑句子"Im a haxor!"可以从中抽
>> 取几个单词组成Imhaxor,好象没有数字,呵呵,用"eleet"的hacker语言,haxor=h4x0r
>> 所以我们的口令可以是:Imh4x0r(我是hacker).这样的密码恐怕只能用暴力破解了.
如果你对hacking有了深入了解,你应当加密所有的东西!
为你的数据做个备份,当然要先加密,把它放在一个隐秘的地方,最好不要在家里.
所以即使你因为失误,火灾或警察搜捕等原因丢失了数据,你还可以得到备份数据.
只有当你真的需要它们时才写出来,否则将它们放在一个机密文件或加密分区里更
安全.一旦你不需要它们了,烧掉那些纸.你也可以用只有你自己知道的加密机制将
它们写下来,但不要告诉任何人,也别太经常的使用它.也许它很容易被分析和破解
真正沉稳和谨慎的hackers应该考虑实施干扰方案.警察,间谍,其他hacker能监视你
的举动.一个拥有先进设备的人可以获得他想要的任何东西:
计算机发射的电子脉冲可以从100米以外的距离被截获,可以显示你的监视器屏幕,
监听你的私人谈话,确认键盘敲击时的高频信号等等...所以各种可能性总是存在的.
成本低廉的应付方法就是采用电子脉冲干扰发射机,商店里就有卖的.如果你不想让
>> 译者注:不知道我们的商店里有没有卖的.;-)
任何人监视你,我认为这些还不够...
* 3. 你自己的帐户 *
下面让我们谈谈你自己的帐户.它就是你在学校/公司/ISP那里得到的帐户,它
总是与你的真实姓名联系在一起,所以在使用它时绝对不要违背下面的原则:
永远不要用你的真实帐户做任何非法或者惹人怀疑的事!
永远不要试图从你的真实帐户telnet到任何被hacked主机去!
当然可以用这个帐号订阅安全mailing lists.
但任何与hacking有关的东西都必须加密或者立刻销毁.
决不要在你帐号下保存hacking或security工具.
尽量用POP3连到你的mailserver下载或者删除你的邮件(如果你对unix比较熟悉,
还可以直接telnet到POP3端口执行下载或者删除命令).
决不要泄漏你的真实email给你不信任的人,只把它给你信任的人,他们也应当是比较
注意安全问题的人,否则如果他们被捕,下一个就是你了(或许他们根本就是警察,而不
是hacker.).
与其他的hacker用email交流时必须要用PGP加密,因为系统管理员经常偷看用户目录,
甚至读区别人的email!!其他的hacker也可能hack你们的站点并试图得到你的数据.
绝不要用你的帐号表明你对hacking感兴趣!
对安全感兴趣可以,但不要再进一步了.
>> 译者注:与别人交流时可以申请免费信箱,最好是国外的,比如hotmail之类,登陆时注意最好
>> 通过proxy.自己的真实信箱应当只用来进行一般的正常通信,与朋友/老师/同事...
* 4. LOG文件 *
有三个重要的log文件:
WTMP - 记录每次登录的信息,包括登陆/退出的时间,终端,登录主机ip
UTMP - 在线用户记录
LASTLOG - 记录用户上次是从哪里登录的
当然还有其他的log,它们将在"高级技巧"一节种讨论.每次通过telnet,ftp,rlogin,rsh
的登录都会被记录到这些文件中.如果你正在hacking,把自己从这些记录中删除就是很
重要的了.否则他们会:
a) 准确的发现你什么时候在搞hacking活动
b) 发现你从那个站点过来
c) 知道你在线的时间有多长,以便计算你给他们造成的损失
绝对不要删除这些log文件!!!那等于通知管理员:"嗨,你的机器上有个hacker!".找一个
好程序来修改这些log.ZAP(或ZAP2)经常被认为是最好的但事实上它并不是.它只是简单
的用0来填充用户上次登陆的数据段.CERT已经发布了一个简单的程序用来检查这些全零
数据项.所以这样也会很容易就让人知道现在有个hacker在活动,这样你所有的工作就没
有意义了.ZAP的另外一个缺陷是当它找不到那些log文件时,它并不报告.所以在编译之前
必须先检查一下路径!你应该使用能改变记录内容的程序(象cloark2.c)或者能真正删掉
记录的程序(象clear)
>> 译者注: THC提供的cleara.c ,clearb.c是非常好用的清除工具.可以清除
>> utmp/utmpx,wtmp/wtmpx,修复lastlog让其仍然显示该用户的上次登录信息(而不
>> 是你登录的信息).如果你发现你登录后没有显示上次登录信息,那很可能你的机器
>> 可能已经被人hack了,当然,即使显示正确的信息也未必就没有被hack.;-)
一般来说要修改log你必须是root(有些老版本系统例外,它们将utmp/wtmp设成允许所有人可写)但
如果你不能得到root权限---你该怎么做呢?
你应该rlogin到你现在所处的主机,以便在lastlog种增加一个不是那么惹人怀疑的数据项,它将在
该用户下次登录时被显示,如果他看到"上次从localhost登录"的信息时也许不会怀疑.
>> 译者注:这也是没有办法的办法,换了我,我就会怀疑.;)
很多unix系统的login命令有一个bug.当你登录以后再执行一遍login命令时,它将
用你当前的终端重写UTMP中的login from段(它显示你是从哪里来的!)
那么这些log文件缺省在什么地方呢?
这依赖于不同的Unix版本.
UTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
WTMP : /etc 或 /var/adm 或 /usr/adm 或 /usr/var/adm 或 /var/log
LASTLOG : /usr/var/adm 或 /usr/adm 或 /var/adm 或 /var/log
在一些旧unix版本中lastlog数据被写到$HOME/.lastlog
* 5. 不要留下痕迹 *
我曾经碰到很多hacker,他们把自己从log里删除了.但他们忘记删掉他们在机器中留下
的其他一些东西:在/tmp和$HOME中的文件
Shell 记录
一些shell会保留一个history文件(依赖于环境设置)记录你执行的命令.这对hacker来
说确实是件很糟糕的事.
最好的选择就是当你登录以后先启动一个新shell,然后在你的$HOME中查找历史纪录.
历史记录文件:
sh : .sh_history
csh : .history
ksh : .sh_history
bash: .bash_history
zsh : .history
>> 译者注:.*history是我最喜欢看的文件之一,通过它你可以了解root或用户常干些什么,
>> 从而得知他们的水平如何,如果他们只会执行"ls","pwd","cp"...那说明水平不过尔尔,无须
>> 太担心.不过如果你发现root喜欢"find / -type f -perm -04000 -exec ls -al {} ;","
>> "vim /var/adm/messages","ps -aux( -elf) ","netstat -an"....那你就要小心一点了
备份文件 :
dead.letter, *.bak, *~
在你离开前执行一下"ls -altr"看看你有没有留下什么不该留下的东西.
你可以敲4个csh命令,它能让你离开时删掉这些历史文件,不留下任何痕迹.
mv .logout save.1
echo rm .history>.logout
echo rm .logout>>.logout
echo mv save.1 .logout>>.logout
>> 译者注:对于bash,有一个简单的办法就是执行一下"HISTFILE=",就是不设置bash的历史文件,
>> 这样就不会有讨厌的.bash_history了.(准确地说,是不会往$HOME/.bash_history里写了)
>> 或者退出的时候简单的敲kill -9 0 ,它会杀掉这次登录后产生的所有进程,bash也不会往.bash
>> _history里写
* 6. 你应当避免的事 *
不要在不属于你的机器上crack口令.如果你在别人(比如说一所大学)的机器上破解口令,
一旦root发现了你的进程,并且检查它.那么不仅你hacking的帐号保不住了,可能连你得
到的那passwd文件也没了.那学校将会密切注视你的一举一动...
所以得到口令文件后应该在自己的机器上破解.你并不需要破解太多的帐号,能破出几个就
够了.
如果你运行攻击/检测程序象ypx,iss,satan或其他的exploiting程序,应当先改名再执行它们.
或者你可以修改源码改变它们在进程列表中显示的名字...
>> 译者注:这并不难,你只要在main()中将argv[]用你喜欢显示的名字替代就可以了比如argv[0]
>> ="in.telnetd",argv[1]=""...(当然必须在程序已经从argv中读取了所需的参数之后).
如果某个细心的用户/root发现5个ypx程序在后台运行,他马上就会明白发生了什么.
当然如果可能的话不要在命令行中输入参数.如果程序支持交互方式,象telnet.
应当先敲"telnet",然后"o target.host.com"...这就不会在进程表中显示目标主机
名.
>> 译者注:如果你用ftp,最好这样做:
>> $ ftp -n
>> $ ftp>o target.host
>> blahblah...(一些连接信息)
>> blahblah...(ftp server版本)
>> ftp>user xxx
>> ....
如果你hack了一个系统---不要在任何地方放suid shell!
最好装一些后门象(ping,quota或者login),用fix来更正文件的atime和mtime.
>> 译者注: 放suid shell是很蠢的,非常容易被root发现.
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 编写,用来提供被进程打开的文件的信息,
>> 它的最新版本可以在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]: cant 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变
量.
php爱好者站 http://www.phpfans.net PHP|MySQL|javascript|ajax|html.
相关阅读 更多 +