偶然的机会发现了一篇名为hacking unix的文章,大概看了看觉得价值十分的大,所以决定翻译出来,我觉得这篇文章一定能够成为中国unix黑客的基石...呵呵,也许有点夸大,不过等你看完了这篇文章以后,你的态度绝对会有转变的...
偶然的机会发现了一篇名为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那种不开放源代码的作风....好了继续吧.不发牢骚了