首先说一下写这篇文章的目的,近来越来越多的人问我诸如“我如何能够黑了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 t