入侵FAQ

/ns/hk/hacker/data/20010610032713.htm

入侵FAQ

/####################尊重作者权益,转载时请保留此信息##########################/
/*入侵FAQ*/
/*原著:ben-z http://www.slacknet.org | benz@slacknet.org*/
/*编译:无用君 admin@root.com.cn*/
/*欢迎光临网络技术 http://sadan.yeah.net */
/*欢迎光临网络安全技术交流场所“网络论坛” http://www.s8s8.net */
/#############################################################################/

第一节 给初学者的

索引:

01. 我怎么才能知道对方是使用着UNIX?
02. 我怎么知道对方使用的是哪种版本的UNIX?
03. 我入侵UNIX会出现什么情况?
04. 在我要入侵的主机上,我需要一个帐户吗?
05. 什么是DoS?
06. 怎么样才能防范DoS攻击?
07. 什么是缓冲区溢出?
08. 有什么好的UNIX网站或Ftp站点吗?
09. 什么是BSD?
10. 什么是Linux?
11. x86是干什么的?
12. 除了x86以外还有什么其它的系统?
13. 一般服务器会打开什么样的服务?
14. 现在有什么简单的办法去入侵?
15. 我能用Windows入侵任何东西吗?
16. 为什么Linux比Windows好?
17. 什么是suid/sgid?
18. 什么地方最适合初学者?
19. 入侵能给我带来多少麻烦?
20. 我应该先入侵什么样的系统?


01. 我怎么才能知道对方是使用着UNIX?
其实有很多办法可以远程获取对方的操作系统信息。最先也是最重要的就是如果对方的系统是UNIX的话,它应该同时有telnet和ftp服务。然后看看登陆信息,以Telnet为例,如果你在登陆信息里看到任何类似BSD, UNIX, Linux, AIX, IRIX, 或HPUX的东西,那它八成是Unix系统。当然,管理员很有可能改变Telnet登陆时显示的信息(/etc/issue.net),所以Telnet登陆信息并不总是可信赖的。不过你一般都可以通过ftpd version准确的猜测出对方的操作系统,如果你从ftpd version中看到任何类似wu, ncfptd, or proftpd等东西,那它一定是Unix啦。不过万一你看见信息包含了"Microsoft"或"Serv-U"等类似只能在ms windows上运行的ftp客户端的话,呵呵.......(bad!).

还有一些可以更准确的判断对方操作系统的方法,如通过数据包检查系统指纹,现在有很多这样的工具,我个人认为最好的要算fyodor的nmap了(http://www.insecure.org/nmap)。通过这些简单的的端口扫描,你可以常识去找与这些数据包类型相匹配的操作系统。Nmap一般附带了几百种操作系统指纹,而且它以其准确度及速度闻名于世。操作系统指纹也并不总是百分之百的正确,由于它的资料太过复杂,本文无法详细的介绍。基本上,一些系统管理员改变了其系统发出的数据包去欺骗扫描器,让扫描器以为这是其它系统甚至根本无法阅读。如果你对这方面敢兴趣的话可以到http://www.geek-girl.com/bugtraq中去看看详细资料。

02. 我怎么知道对方使用的是哪种类型的UNIX?
一般Telnet登陆信息会显示操作系统信息及其类型。如果你在目标机中有一个本地帐号,那你可以输入uname -a来看一些系统信息。在Linux上,你可以到/proc目录下阅读cpuinfo来获取一些令你感兴趣的东西。如果对方使用的是RedHat Linux,你那这个文件则放置于/etc的目录中,叫做redhat-release,其中包含了其系统的版本和类型。

我同时也在研究如何通过比较rpm来得到指纹从而可以利用数据包来判断操作系统,因此你便可以找到该操作系统的exploit并得到限权。

03. 我入侵UNIX会出现什么情况?
无论你是否能“成功”的入侵进一个UNIX系统, 这里都有一些基础的命令你需要了解。
_______________________________________________________________________________
| 命令 | 描述 |
|-----------------------------------------------------------------------------|
| id | 打印出你现在的UID/GID. 0 = root = 成功! |
| whoami | 确定你现在是以什么身份登陆的。 |
| set | 显示一个包含$USER和$EUID等系统变量的目录。 |
-------------------------------------------------------------------------------
如果你到现在还不知道什么是root的话,请在你重新阅读这篇文章之前先读一些Unix系统的基础知识。另外,这里也有一些其他的技巧来帮助你确定你已经真正得到了Root.
a. bash prompt: 当你以普通限权用户身份进入的时候,一般你会有一个类似bash$的prompt。当你以Root登陆时,你的prompt会变成 bash#。
b. 系统变量 : 试着echo "$USER / $EUID" 系统应该会告诉你它认为你是什么用户。
c. 文件限权 : 当你是Root时,你对大部分的文件都应该有读和写的限权。试着以普通用户登陆,并且读/etc/shadow或/etc/passwd。 多数系统不会允许普通用户阅览这两个文件,如果你是root的话你则可以随便读写它们。(不过一般情况下还是不要乱 碰它们^O^-----译者注)

04. 在我要入侵的主机上,我需要一个帐户吗?
很多系统可以通过溢出漏洞远程获取限权。这是入侵Unix和NT最大的区别:Unix是为远程管理设计的,因此很多熟练的黑客可以一次就获取限权。对于NT,没有默认的Telnet等其它远程管理服务,所以一般需要你能物理的接触主机(呵呵,恐怕作者写这篇文章的时候怎么也没想到几年后的中国人会发现Unicode漏洞并制作了流光这种工具,再一次向袁哥小榕致敬^O^-----译者注)。当然,任何只有一半大脑的人只要愿意都可以保护自己的系统,让其不受远程攻击,所以如果你有一个本地帐号的话对你的帮助还是很大的。

05. 什么是DoS?
孩子们,不要误解,这可不是C:\DOS。 这是拒绝服务攻击(Denial of Service)的简称,一个非常致命(并且低级)的攻击概念。DoS一般被用于一些很使用的目的,一般人会用它来显示自己的能力和技巧,尽管这种攻击方法几乎不需要什么技巧。我认为DoS有用的唯一原因是因为它可以用于欺骗目的:当局部网中一台系统瘫痪时,你可以把你自己的地址改成那台已经瘫痪掉的电脑的,并且中途截取类似用户名和密码等重要的信息(现在的IP欺骗技术已经开始运用于广域网了------译者注)。在http://www.rootshell.com(在documentation下) 有关于TCP劫持技术的一个说明,有兴趣的朋友可以去看看。好了,我们回到主题上。拒绝服务攻击的定义可以简单描述为计算机受到此攻击后会拒绝一切internet主机的请求,停止一切服务,因此可以引起系统或软件彻底的崩溃。现在最普遍的DoS攻击(从我有限的知识来说)是 papasmurf, boink/poink, feh, smack, bmb,和synk5。这都是些用于IRC的过时的玩具,所以.......注意点你的形象吧。

06. 怎么样才能防范DoS攻击?
至今为止还没有能百分之百可靠的方法来防范DoS攻击,如果攻击宽带大于你的宽带,那你就输了:故事结束(看来作者在写这篇文章的时候DoS技术还是只局限于单机攻击-----译者注)。但如果你的宽带等于或大于攻击者,那么他的IP则可以很容易的被类似linux 2.2.x下的Ipchains或Windows下的conseal防火墙等软件过滤掉,一些比较有趣的防火墙过滤脚本可以在http://www.freshmeat.net或者http://www.linuxberg.com找到。如果你喜欢在IRC聊天的话(yay!),用类似bnc的东西隐藏你真实的IP地址是个绝对聪明的选择,事实上它还能让你更快的连接。你可以到ftp.bitchx.org/pub/misc上下载bnc的原代码。

07. 什么是缓冲区溢出?
长话短说,缓冲区溢出漏洞是指通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
例子:
[benz@oldbox]$ whoami
benz
[benz@oldbox]$ /usr/bin/sperl4.036 AAAAAA(etc..) [garbage]/bin/sh
Segmentation Fault
[root@oldbox]# whoami
root
上面的记录是一个通过著名的sperl溢出得到root限权的例子。来确定你想溢出的程序能给你root限权,你需要输入ls -al并寻找限权许可中的"s",并且这个文件是属于root的。这说明了这个程序是suid/root,而且当它运行的时候用户会被切换成root状态执行它。因为篇幅关系,这段对缓冲区溢出的说明非常短,而且也非常简单。如果你想了解更多关于此技术的信息可以到http://www.phrack.com - issue 49-14查阅
"Smashing the Stack for Fun and Profit" (为娱乐和利益破坏缓冲区)by Aleph One。(网络论坛菜鸟版里有阿新刚整理的缓冲区溢出教学,很全http://www.s8s8.net/!另外中联绿盟和绿色兵团里也有很多关于溢出漏洞的中文资料,有心的朋友不妨去看看:http://www.nsfocus.com/ http://www.vertarmy.org / ------译者注)

08. 有什么好的UNIX网站或Ftp站点吗?
Bugtraq网络安全邮件列表: http://www.geek-girl.com/bugtraq
rootshell文档(有点过时): http://www.rootshell.com
电子科学文档: ftp://ftp.technotronic.com
SlackNet: http://www.slacknet.org
Linux.org: http://www.linux.org
FreeBSD.org: http://www.freebsd.org
Packetstorm: http://packetstorm.genocide2600.com
2600 magazine: http://www.2600.com
Phrack magazine: http://www.phrack.com
(译者推荐:
中联绿盟:http://www.nsfocus.com/
绿色兵团:http://www.vertarmy.org/
网络安全文档集散地:http://www.docshow.net/
中国安盟:http://www.cn-nsl.com/
安全焦点:http://www.xfocus.org/
网络安全评估中心:http://www.cnns.net/)

09. 什么是BSD?
BSD是Berkeley Systems Distrobution的缩写,是一种UNIX版本,以其使用的稳定性和简易性颇受广大Unix使用者的欢迎。详细的信息请参见http://www.freebsd.org, http://www.openbsd.org , http://www.bsdi.org 。

10. 什么是Linux?
Linux最先由Linus Torvalds在网络上组织人员为PC机写了第一个免费的UNIX内核(KERNEL),发展至今已经成为一个能在PC上可靠稳定工作的UNIX/X-WIN操作系统.这是一个在POSIX<Portable Operating System Interface for computer Environments(便携式计算机环境操作系统接口[界面][标准])>基础上建立的操作系统,现在成为了黑客普遍使用的平台。更多的信息请参见http://www.linux.org。

11. x86是干什么的?
x86是对基于intel处理器的系统的标准缩写。X与处理器没有任何关系,它是一个对所有*86系统的简单的通配符定义,例如:i386, 586 奔腾(pentium)。

12. 除了x86以外还有什么其它的系统?
除了基于Intel的系统,还有其他许多体系用于UNIX。一般来讲最普通的non-x86系统结构是Sun公司的工作站系统“Sparc”。它们的能力几乎和x86系统结构不分秋色,这些代表性的系统有SunOS和Solaris。

13. 一般服务器会打开什么样的服务?
一般我想知道对方服务上上有什么服务是由对方使用的什么操作系统而决定的。例如,如果对方的系统是Linux 2.0.3x,那么我将扫描几个代表性的服务如tcp/111上的rpcbind/portmap,因为我知道这些服务上可能存在着溢出漏洞。下面是一些系统上可能会存在漏洞的服务,如果你发现目标上存在这些服务就要仔细的研究一下了:
Redhat 4.2: tcp/143 (imap), etc..
RedHat 5.0: tcp/25 (sendmail), tcp/143 (imap), tcp/25 (qpop), tcp/53 (bind)
RedHat 5.1: tcp/111 (rpcinfo -p <target>), tcp/110 (qpop), tcp/53 (bind)
RedHat 5.2: tcp/21 (wu-2.4.2-academ[BETA-18](1))
Slackware: tcp/111 (rpc), tcp/110 (qpop), tcp/21 (wu-ftpd), tcp/53 (bind)
FreeBSD: tcp/110 (qpop), tcp/143 (imap), tcp/53 (bind)
Solaris: tcp/110 (rpc), tcp/53 (bind)

14. 现在有什么简单的办法去入侵?
<看第13问上的服务列表>

15. 我能用Windows入侵任何东西吗?
很荣幸的告诉你,可以。甚至将近有50多个漏洞你光使用阅览器就可以入侵!这些CGI漏洞很常见,看看下面这几个:
/cgi-bin/phf
/cgi-bin/php.cgi
/cgi-bin/Count.cgi
/cgi-bin/info2www
/_vti_pvt/service.pwd
/cgi-bin/test-cgi
/cfdocs/expeval/openfile.cfm
/cgi-dos/args.bat
/cgi-win/uploader.exe
(现在这种漏洞又增加了不少,当然它们是菜鸟的福音,但这些漏洞真能提高黑客的水平吗?------译者注)

16. 为什么Linux比Windows好?
我有几百个为什么Linux比Windows好的理由,不过我用一句忠告来代替全部这些理由:如果你想成为一个在Windows下需要事实的幸存者的话,相信我的话,去看看这个吧 http://www.darkelf.net/metachart 。

17. 什么是suid/sgid?
<看第7问>

18. 什么地方最适合初学者?
我认为最好的地方莫过于IRC聊天室了。因为大多数黑客都是自己去学习的,所以黑客的技术资料并不是非常丰富,不过还是有许多非常好的黑客资料可以在网上找到,看看第8问后面的那些URL,我想会对你们有很大的帮助。

19. 入侵能给我带来多少麻烦?
大多数象我一样的典型的学生黑客还都未满18岁,也就是说还是未成年人。如果对未成年人起诉没有成立的话,你只需要担心会接到一笔白痴但不会太多的罚款。不过其它一些年龄比较大的黑客,我建议你在真正进行入侵前还是最好先找一个律师。这可能听起来很愚蠢,但是任何人都有可能在入侵后的第二天便接到法庭的传单。如果你想了解一些关于成年黑客犯罪的信息,请去参见http://www.kevinmitnick.com。

20. 我应该先入侵什么样的系统?
对于初学者,我认为你第一台应该入侵的电脑最好是你自己的。有很多更好的方法去在本地学习网络安全,尝试自己安装一个类似Linux和BSD一类的服务器,然后查找漏洞,这能在安全的前提下给你带来很多乐趣。