怎么样入侵UNIX?

怎么样入侵UNIX?

// 英文原著地址: http://fringe.davesource.com/Fringe/Hacking/crap/Hack_Unix.beginners
// 翻译作者的Blog: http://cnbird.99blog.com
// 原来文章地址: http://www3.hackbase.com/hacker/tutorial/200412279229.htm

作者:cnbird QQ:550669 http://cnbird.99blog.com

偶然的机会发现了一篇名为hacking unix的文章,大概看了看觉得价值十分的大,所以决定翻译出来,我觉得这篇文章一定能够成为中国unix黑客的基石...呵呵,也许有点夸大,不过等你看完了这篇文章以后,你的态度绝对会有转变的...

再次声明,这篇文章不是为脚本小孩准备的,因为脚本小孩只会找有已知漏洞的机器,然后用脚本去入侵.......好了不罗嗦了go...........

5.3.1. 基本端口扫描

应用服务监听在一个端口上,并且直到等待到一个连接(TCP)或者报文被收到.端口扫描器就是做扫描应用服务监听端口的工作.当任何应用可能易受某种攻击伤害时,对一位黑客来说这信息有价值.同时它也给出了在那个系统的目的上的线索.如果看来像是一邮件服务器程序在远程系统上,只不过可能是这个系统是组织的mailserver。为了查明,在一个目标第一系统上运行的服务能连接每个可能的端口并且查明他们中的哪些正在被监听.这种方式就是端口扫描.端口扫描看起来是简单的扫描哪个服务器开开放什么端口,但是这里面也有很多不同的技术.在这部分里面我仅讲述2中基本的端口扫描技术,TCP全连接和半连接.

5.3.2. TCP 全连接(FULL CONNECT)

TCP与UDP是一个面向连接的协议是不同的,一次仅仅建立一个连接,通讯就能进行.去做一个tcp端口扫描的另外一个方式是只尝试启动一个连接.这过程要求TCP进行3次包的交换(就是传说中的三次握手),我以一个典型的例子再一次讲解A和B之间的连接.

①主机A发送TCP SYN包给B,

②主机B发送TCP SYN/ACK包给主机A

③主机A发送TCP ACK包给主机B

三次握手初始化使用的顺序号是必要的, 在哪些连接期间同时记录哪些建立哪些操作系统的双方连接(当然,只有一个连接可以被建立)。 如果在目标系统上的一个范围的内的端口中有1个端口回复了3次握手的过程,哪我们就可以肯定这个端口是开放的.当目标系统上的端口没有开放的时候,那么它将返回一个RST的包.简而言之,TCP协议的头部包含了flags(就是标志位).例如"SYN"标记设置了,flags(标志位)告诉大约包应该怎样被对待的某些事情.在例如RST标志位表明这个连接重新建立.(连接中断).这SYN标志位是开始,或者协调一个连接的一个请求。 ACK这个标志位只是确认.好了不说了也许你们都不喜欢看,如果有兴趣的可以去看TCP/IP~本站也有相应的tcp/ip教程..让我们来看一个具体的实例吧.

让我们再一次在你自己的本地系统尝试一个TCP全连接扫描:

$ nmap localhost
Starting nmap ( http://www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1649 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop-3
143/tcp open imap
515/tcp open printer
993/tcp open imaps
5432/tcp open postgres
Nmap run completed -- 1 IP address (1 host up) scanned in 0.815 seconds
$
这种类型的端口扫描用的是操作系统的应用程序的接口去创建连接,以与一个正常的程序(象你的webbrowser一样)将同样的方式。 它的另外一个名字是TCP connect(),相信这个大家比较熟悉吧.因为connect()是操作系统的过程去建立一个连接.操作系统将告诉我们这个连接是连接了还是没有连接(failed).原因是应用服务已经注册了一个套接字(SOCKET).并且一旦一个进来的连接被建立,操作系统告诉应用服务程序继续.这种扫描将会被日志纪录,其余的部分自己看看TCP/IP协议吧.

我们开始另外一个扫描方式也是很隐蔽的方式,半连接扫描

5.3.3. TCP半连接扫描.

TCP半扫描又称作"SYN扫描"或者一些时候也叫"SYN秘密扫描".它的意思就是端口扫描器讲发送一个SYN包,知道它接受到了SYN/ACK或者是RST一次这样的话我就能得到端口的状态(SYN/ACK说明此端口开放,RST代表端口没有开放)然后继续扫描下一个端口.连接绝不会被完全建立,因此任何应用程序记录将不发生(就是说不写入日志).(当连接已经被建立时,TCP 只将通知进来的连接的申请).所以它有了秘密扫描的名字.好了下面我来给出一个半连接扫描的例子

# nmap -sS 10.0.0.1
Starting nmap ( http://www.insecure.org/nmap/ )
Interesting ports on 10.0.0.1 (10.0.0.1):
(The 1649 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop-3
143/tcp open imap
515/tcp open printer
993/tcp open imaps
5432/tcp open postgres
Nmap run completed -- 1 IP address (1 host up) scanned in 0.787 seconds
#
手工端口扫描

这里有一个非常时髦的工具叫做"hping"(http://www.hping.org)

给出一个例子:

devil:~# hping -S -p 79 tosca
HPING tosca (eth0 192.168.9.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.9.1 ttl=64 DF id=2869 sport=79 flags=RA seq=0 win=0 rtt=0.3 ms
len=46 ip=192.168.9.1 ttl=64 DF id=2870 sport=79 flags=RA seq=1 win=0 rtt=0.4 ms
--- tosca hping statistic ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.3/0.4/0.4 ms
devil:~#
正如你看到的那样,返回了RST和ACK的包.

好了开始下一个主题: 开始之前废话几句,我写这篇文章的目的是以黑客的角度来分析UNIX的入侵技术,为什么要以这个角度写呢,因为网络管理员必须要知道黑客的手法才能更好的防守.所以我写本文的目的是更好的防守,因为我比较喜欢UNIX,我最讨厌windows那种不开放源代码的作风....好了继续吧.不发牢骚了

5.3.4. OS 探测

这里没有简单的方法去鉴定远程的操作系统.NMAP提供了一个很好的方法而且非常可靠的方式去找到操作系统的指纹(fingerprint).这个技术是利用操作系统的各种各样的网络协议方面的在实施方面的轻微的变化分清操作系统和他们的版本。

让我们来尝试一个:

# nmap -P0 -sS -O 192.168.0.1
Starting nmap ( http://www.insecure.org/nmap/ )
Warning: OS detection will be MUCH less reliable because we did not find
at least 1 open and 1 closed TCP port
Interesting ports on server (192.168.0.1):
(The 1655 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
21/tcp open ftp
23/tcp open telnet
Device type: general purpose
Running (JUST GUESSING) : DEC OpenVMS 7.X (90%), Compaq Tru64 UNIX 5.X (88%)
Aggressive OS guesses: DEC OpenVMS 7.3 (Compaq TCP/IP 5.3) (90%),
DEC OpenVMS 7.3 (Alpha) TCP/IP 5.3 (88%), Compaq Tru64 UNIX V5.1 (Rev. 732) (88%), Compaq Tru64 UNIX V5.1A (Rev.
No exact OS matches for host (test conditions non-ideal).
Nmap run completed -- 1 IP address (1 host up) scanned in 284.404 seconds
这里有个小技巧,就是NMAP打印LINUX的内核,而不是具体的linux操作系统版本号,有经验的人很容易得到版本号,下面给出几个常用的对应表

2.2.16=red hat 7.0 2.2.20= red hat 9.0

大家弄多了就有经验了.
好, 说不可靠即使,完全关闭(OpenVMS) .建议你必须跟一些端口扫描技术一起使用-O 选项...如果主机再线但是远程系统没有对ICMP ECHO(PING)作出作出反应,那么你应该用-PO选项去关闭检测.

$ telnet server
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.
Welcome to OpenVMS (TM) Alpha Operating System, Version V7.3-2
Username: [SSL not available]
指纹的想法不是新的技术,并且是被在各种各样的工具里使用的(虽然Nmap是利用这的第一个公共工具之一), 但是Nmap巨大的指纹数据库并且给非常准确的结果.

本来到时间了该吃饭了,可是今天心情不好不想吃了,继续翻译吧..

Let's go on..

 

5.4. 处理防火墙

这个部分讲解的是防火墙的基本概念,我将介绍几种新显示轮廓的方法去确认一个防火墙和发现防火墙的规则(ruleset).在一个相互连接的环境在internet网上的用户可以访问其他的网络.一组织将想要限制参与因特网并且将特别想要限制从不可信的因特网进入进内部的网络。 防火墙在交互模式下用于控制网络交通.管理者需要组成一个基于服务的策略,用户关于外部网络要求和服务关于要求的内部的网络从网络的外面进入.到外部网络的某种部分限制进入进内部的网络也是可能的.这个规则然后能被转化成能被用于安置在两个网络之间的防火墙的规则表。

下面介绍几种常见的防火墙:

5.4.1. Packet Filtering Firewalls (包过滤防火墙)

网上有很多这方面的介绍我就不浪费时间了,我们下面给出一个规则:

管理者确定的第1 个(聪明)规则看起来象这样:

Source: Anywhere
Destination: Anywhere
Protocol: Any
Destination port: Any
Policy: DENY
下一步管理者努力鉴定这基础规则的例外 .一名管理者可能在组织网络里面有mailserver(邮件服务器)。

我宿舍的朋友给我买饭了.先吃吧..一会再写,先看看魔兽的录象,以前我可是human的guso,再bn上曾经打到过38级,不是吹的,希望大家有时间的话和我切磋啊~..

好了吃完了继续吧...

上次我们讲到了这里下一步管理者努力鉴定这基础规则的例外 .一名管理者可能在组织网络里面有mailserver(邮件服务器)。

下面继续讲邮件被通过SMTP 服务从邮件服务器交付,简单的例子就是sendmail和postfix.管理员知道SMTP服务必须能从INTERNET接收邮件,所以管理员定义了一个新的规则(关于第一个的规则的例外)

 

Source: External (Internet)
Destination: Internal mailhost
Protocol: TCP
Destination Port: 25 (SMTP)
Policy: ACCEPT.

意思任何包从任何预定到去SMTP 服务(TCP 端口25)的地址在MIAL服务器上将被提供适当的方向.. 管理员允许在internet上的任意系统给用户的邮箱交付E-Mail.管理员没有为INTERnet网络定义规则,那些用户只需要连接邮件服务器,不对在内部的网络外边的邮件服务器.因此他只将需要从邮件服务器为SMTP做一个例外:

Source: Internal mailhost
Destination: External (Internet)
Protocol: TCP
Port: 25
Policy: ACCEPT

管理者想要的下一件事情将允许用户在邮件服务器使用POP3 协议上从他们的信箱收到他们的邮件 .管理员喜欢在internet把POP协议设置为.DENY.好了下次再写吧累死了,干了好几个小时了...

休息去啦........

88

I will come soon...

Waiting for me..........

 

part:4

上次讲了防火墙部分,比较的难理解.如果大家不懂的话可以参考一下TCP/IP协议部分,我们讲了TCP/IP协议是基础中的基础,重点中的重点,希望大家认真的学习一下这方面的知识,对你们学习这方面的知识肯定有帮助的.好了不废话了,防火墙部分太枯涩,而且我感觉大家一定没兴趣我就不翻译这部分了,有兴趣的朋友向我要原文,下面还是讲解实际的例子吧.

go.....

约翰首先对webserver(WEB服务器)处理的一个无害的连接测试程序如下:

$ ping www.totallysecure.org
PING www.totallysecure.org (123.123.123.123): 56 octets data
--- www.totallysecure.org ping statistics ---
12 packets transmitted, 0 packets received, 100% packet loss
$

约翰知道一定有一些设备丢弃了ICMP(PING)回声请求包的方式,虽然他知道可能不是他自己的webserver。

下一步,约翰想知道一些端口是不是也被过滤掉了,管理者经常过滤端口和协议而不是堵塞它们.这样看起来主机好像是不再线的(offline)。从我们以前讲的知识来看,当我们发送一个SYN包的时候关闭的端口需要回复一个RST/ACK包,从这点能看出防火墙到底有没有过滤它.他将用hping这个程序去发现它:

# hping www.totallysecure.org -S -p 85
HPING www.totallysecure.org (eth0 123.123.123.123): S set, 40 headers + 0 data bytes
--- www.totallysecure.org hping statistic ---
10 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
#

-S选项表明SYN标志位已经设置了,-p选项指定了目标端口.毋庸置疑,它将被过滤掉.当把一单个ACK包送到一个端口时,正常的状态下将收到RST的回复.如果现在防火墙不那么完美,它可能只到那个端口堵塞同步(对连接同步来说)包 .如果我们给85端口发送了一个ACK的包以后我们接收到了一个RST的包,那么他就表明这是一个非常普通的防火墙,因为它仅仅丢掉了SYN包.

# hping www.totallysecure.org -A -p 85
HPING www.totallysecure.org (eth0 123.123.123.123): A set, 40 headers + 0 data bytes
--- www.totallysecure.org hping statistic ---
4 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
#

根本的没有反应,好,它或许被正确地过滤.我建议ACK包发送到没有过滤的端口(是否打开还是关闭)经常返回一个RST包.你还是不能确定这个端口是否开放.现在,我们用于这次行动(85)港口是不重要的,只要我们认为这或许没有使用中.是这条线索可以使我们认为主机已经过滤全部端口并且做具体的端口的例外要求是开的(像webserver).我们能这样检测它:

# grep 85 /etc/services
#
因此管理员过滤了不使用的端口,可他为什么不过滤他没有用的所有端口呢?约翰可能以为既然管理者的第一个规则是把任何连接丢失在进来的端口上,至少从外面(因特网)那里。 如果防火墙正确地工作,没有普通的后门可能被在防火墙上安装而没有改变设置规则。有另一个方法看看防火墙是否正确地过滤,这通过用打碎(fragmented)的包测试它。 打碎或者是打散的包通常被用来在有一个更低的最大传输单位(MTU)的网络上方送包.打碎或者是打散的包能把头部分成很多的小包.一些防火墙在堵塞象他们这样没有完全的集中的这样的包失效, 并且他们不等待为重建而收集全部碎片.约翰用Fyodor的nmap再一次执行了一个简单的测试,

# nmap -sS -p85 -f www.totallysecure.org -P0
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
Interesting ports on www.totallysecure.org (123.123.123.123):
Port State Service
85/tcp filtered unknown
Nmap run completed -- 1 IP address (1 host up) scanned in 36 seconds
#

他用了-f选项去打散包,-P0告诉nmap不去检测这个主机是否存活(当连接测试程序不通过时,Nmap以其他方式认为主机关闭down),-sS选项是做一个SYN扫描,结果,Nmap使包分裂成6个碎片,象用一个嗅探器看见的那样。如果我们确实没有flag(标志位)而送包,怎么办.如果端口被关闭,一次所谓无效扫描应该返回RST 包. 这就是为什么这次扫描不可靠,这类扫描表明这端口易受到防火墙的过滤.问题是, 那WINDOWS系统返回一RST 包,即使端口是开(依照说明)的,因此这次扫描不可用于扫描windows系统.但是它仍然是对测试windows系统防火墙的规则,同样是用ACK包的方式.然后我们已经知道防火墙应该过滤什么端口,然后我们用ACK扫描去确认防火墙是不是一个基本的.然后我们使用无效的扫描看看被过滤的端口是否实际上是开的.例如

# nmap -sS -p110 www.totallysecure.org -P0
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
Interesting ports on www.totallysecure.org (123.123.123.123):
Port State Service
110/tcp filtered pop3
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
#
第二步:

# nmap -sA -p110 www.totallysecure.org -P0
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
The 1 scanned port on www.totallysecure.org (123.123.123.123) is: UNfiltered
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
#
Step 3:
# nmap -sN -p80 www.totallysecure.org -P0
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
Interesting ports on www.totallysecure.org (123.123.123.123):
Port State Service
110/tcp open pop3
Nmap run completed -- 1 IP address (1 host up) scanned in 12 seconds
#
看,管理员已经用了一个基本的包过滤,我们已经找出了POP3服务是开放的尽管它是被防火墙过滤了.如果没有成功,我们应该与分段选项(-f)一起试试.这部分知识可以设法介绍端口必须使用的,或许服务于内部的网络用户。 否则管理者太懒惰不能关上POP3 服务。 使用上述技术,约翰有一种这类型防火墙被使用的基本的想法。

然后他得到的结果是这样的:

Protocol ICMP: dropped 初80以外的所有的包都丢失了

约翰搜集到了每一个开放或者是关闭的端口和防火墙的配置.他在一非侵入和相对秘密行动的方式里做它.

约翰想要调查的下一个问题是:

有多少包过滤器?

过滤器在哪里被找到?