400-099-0376

在线试用
微信扫码联系专属客服
安企神软件官网
首页
下载中心
客户列表
关于安企神

深入防火墙记录

2022-07-15

本文将向你解释你在防火墙的记录(Log)中看到了什么?尤其是那些端口是什么意思?你将能利用这些信息做

出判断:我是否受到了Hacker的攻击?他/她到底想要干什么?本文既适用于维护企业级防火墙的安全专家,又

适用于使用个人防火墙的家庭用户。

一、目标端口ZZZZ是什么意思

  所有穿过防火墙的通讯都是连接的一个部分。一个连接包含一对相互“交谈”的IP地址以及一对与IP地址

对应的端口。目标端口通常意味着正被连接的某种服务。当防火墙阻挡(block)某个连接时,它会将目标端口

“记录在案”(logfile)。这节将描述这些端口的意义。

  端口可分为3大类:

  1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表

明了某种服务的协议。例如:80端口实际上总是HTTP通讯。

  2) 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务

绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

  3) 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配

这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

  从哪里获得更全面的端口信息:

  1.ftp://ftp.isi.edu/in-notes/iana/ass...ts/port-numbers

  "Assigned Numbers" RFC,端口分配的官方来源。

  2.http://advice.networkice.com/advice/Exploits/Ports/

  端口数据库,包含许多系统弱点的端口。

  3./etc/services

  UNIX 系统中文件/etc/services包含通常使用的UNIX端口分配列表。Windows

NT中该文件位于%systemroot%/system32/drivers/etc/services。

  4.http://www.con.wesleyan.edu/~trieme...k/docservs.html

  特定的协议与端口。

  5.http://www.chebucto.ns.ca/~rakerman...port-table.html

  描述了许多端口。

  6.http://www.tlsecurity.com/trojanh.htm

  TLSecurity的Trojan端口列表。与其它人的收藏不同,作者检验了其中的所有端口。

  7.http://www.simovits.com/nyheter9902.html

二、通常对于防火墙的TCP/UDP端口扫描有哪些?

  本节讲述通常TCP/UDP端口扫描在防火墙记录中的信息。记住:并不存在所谓ICMP端口。如果你对解读ICMP

数据感兴趣,请参看本文的其它部分。

  0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通

常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层

广播。

  1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,缺省情况下tcpmux在这种系

统中被打开。Iris机器在发布时含有几个缺省的无密码的帐户,如lp, guest, uucp, nuucp, demos, tutor,

diag, EZsetup, OutOfBox, 和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜

索tcpmux并利用这些帐户。

  7 Echo 你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息。

  常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而

两个机器分别以它们较快的方式回应这些数据包。(参见Chargen)

  另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”,

它与DNS的这一端口连接以确定较近的路由。

  Harvest/squid cache将从3130端口发送UDP echo:“如果将cache的source_ping on选项打开,它将对原

始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。

  11 sysstat 这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入

侵者提供了许多信息而威胁机器的安全,如暴露已知某些弱点或帐户的程序。这与UNIX系统中“ps”命令的结

果相似

  再说一遍:ICMP没有端口,ICMP port 11通常是ICMP type=11

  19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接

时,会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务

器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器

过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些

数据而过载。

  21 ftp 较常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。

Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的

节点。

  22 ssh PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定

的模式,许多使用RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)
 
  还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有

时会被使用这一程序的人无意中扫描到。

  UDP(而不是TCP)与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632(十六进制的0x1600

)位交换后是0x0016(使进制的22)。

  23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的

操作系统。此外使用其它技术,入侵者会找到密码。

  25 smtp 攻击者(spammer)寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭,他们需要拨

号连接到高带宽的e-mail服务器上,将简单的信息传递到不同的地址。SMTP服务器(尤其是sendmail)是进入

系统的较常用方法之一,因为它们必须完整的暴露于Internet且邮件的路由是复杂的(暴露+复杂=弱点)。

  53 DNS Hacker或crackers可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火

墙常常过滤或记录53端口。

  需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询

的回复。Hacker常使用这种方法穿透防火墙。

  67和68 Bootp和DHCP

UDP上的Bootp/DHCP:通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。

这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大

量的“中间人”(man-in-middle)攻击。客户端向68端口(bootps)广播请求配置,服务器向67端口(bootpc

)广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。

  69 TFTP(UDP) 许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常错误配置

而从系统提供任何文件,如密码文件。它们也可用于向系统写入文件。

  79 finger Hacker用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其

它机器finger扫描。

  98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的

服务。它已发现有许多安全问题。一些版本setuid root,信任局域网,在/tmp下建立Internet可访问的文件,

LANG环境变量有缓冲区溢出。此外因为它包含整合的服务器,许多典型的HTTP漏洞可能存在(缓冲区溢出,历

遍目录等)

  109 POP2 并不象POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的

漏洞在POP2中同样存在。

  110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲

区溢出的弱点至少有20个(这意味着Hacker可以在真正登陆前进入系统)。成功登陆后还有其它缓冲区溢出错

误。

  111 sunrpc portmap rpcbind Sun RPC

PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的较早的一步。常见RPC服务有:rpc.m

ountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务的特定

端口测试漏洞。

  记住一定要记录线路中的daemon, IDS, 或sniffer,你可以发现入侵者正使用什么程序访问以便发现到底

发生了什么。

  113 Ident auth 这是一个许多机器上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获

得许多机器的信息(会被Hacker利用)。但是它可作为许多服务的记录器,尤其是FTP, POP, IMAP, SMTP和IRC

等服务。通常如果有许多客户通过防火墙访问这些服务,你将会看到许多这个端口的连接请求。记住,如果你

阻断这个端口客户端会感觉到在防火墙另一边与e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过

程中发回RST,着将回停止这一缓慢的连接。

  119 NNTP news

新闻组传输协议,承载USENET通讯。当你链接到诸如:news://comp.security.firewalls/. 的地址时通常使用

这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的

新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送sp

am。

  135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM

服务。这与UNIX 111端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的

位置。远端客户连接到机器时,它们查询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口

是为了找到诸如:这个机器上运行Exchange Server吗?是什么版本?

  这个端口除了被用来查询服务(如使用epdump)还可以被用于直接攻击。有一些DoS攻击直接针对这个端口

  137 NetBIOS name service nbtstat (UDP)

这是防火墙管理员较常见的信息,请仔细阅读文章后面的NetBIOS一节

  139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被

用于Windows“文件和打印机共享”和SAMBA。在Internet上共享自己的硬盘是可能是较常见的问题。

  大量针对这一端口始于1999,后来逐渐变少。2000年又有回升。一些VBS(IE5 VisualBasic Scripting)

开始将它们自己拷贝到这个端口,试图在这个端口繁殖。

  143 IMAP 和上面POP3的安全问题一样,许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住:一

种Linux蠕虫(admw0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已被感染的用户。当Rad

Hat在他们的Linux发布版本中默认允许IMAP后,这些漏洞变得流行起来。Morris蠕虫以后这还是较早次广泛传

播的蠕虫。

  这一端口还被用于IMAP2,但并不流行。

  已有一些报道发现有些0到143端口的攻击源于脚本。

  161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,

通过SNMP客获得这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码“pub

lic”“private”访问系统。他们可能会试验所有可能的组合。

  SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management

软件使用SNMP。HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名,你会看见这种包在子网

内广播(cable modem, DSL)查询sysName和其它信息。

  162 SNMP trap 可能是由于错误配置

  177 xdmcp 许多Hacker通过它访问X-Windows控制台, 它同时需要打开6000端口。

  513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他

们的系统提供了很有趣的信息。

  553 CORBA IIOP (UDP) 如果你使用cable modem或DSL VLAN,你将会看到这个端口的广播。CORBA是一种面

向对象的RPC(remote procedure call)系统。Hacker会利用这些信息进入系统。

  600 Pcserver backdoor 请查看1524端口

  一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统-- Alan J.

Rosenthal.

  635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的

,但基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住,mountd可运行于任何端口(到底在哪个

端口,需要在端口111做portmap查询),只是Linux默认为635端口,就象NFS通常运行于2049端口。

  1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络,它们

请求操作系统为它们分配“下一个闲置端口”。基于这一点分配从端口1024开始。这意味着较早个向系统请求

分配动态端口的程序将被分配端口1024。为了验证这一点,你可以重启机器,打开Telnet,再打开一个窗口运

行“natstat -a”,你将会看到Telnet被分配1024端口。请求的程序越多,动态端口也越多。操作系统分配的

端口将逐渐变大。再来一遍,当你浏览Web页时用“netstat”查看,每个Web页需要一个新端口。

  1025 参见1024

  1026 参见1024

  1080 SOCKS

  这一协议以管道方式穿过防火墙,允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该

只允许内部的通信向外达到Internet。但是由于错误的配置,它会允许Hacker/Cracker的位于防火墙外部的攻

击穿过防火墙。或者简单地回应位于Internet上的计算机,从而掩饰他们对你的直接攻击。WinGate是一种常见

的Windows个人防火墙,常会发生上述的错误配置。在加入IRC聊天室时常会看到这种情况。

  1114 SQL

  系统本身很少扫描这个端口,但常常是sscan脚本的一部分。

  1243 Sub-7木马(TCP)

  参见Subseven部分。

  1524 ingreslock后门

  许多攻击脚本将安装一个后门Shell于这个端口(尤其是那些针对Sun系统中Sendmail和RPC服务漏洞的脚本

,如statd, ttdbserver和cmsd)。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图,很可能是上

述原因。你可以试试Telnet到你的机器上的这个端口,看看它是否会给你一个Shell。连接到600/pcserver也存

在这个问题。

  2049 NFS

  NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口,但是大部分情况是安

装后NFS运行于这个端口,Hacker/Cracker因而可以闭开portmapper直接测试这个端口。

  3128 squid

  这是Squid

HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看

到搜索其它代理服务器的端口:8000/8001/8080/8888。扫描这一端口的另一原因是:用户正在进入聊天室。其

它用户(或服务器本身)也会检验这个端口以确定用户的机器是否支持代理。请查看5.3节。

  5632 pcAnywere

  你会看到很多这个端口的扫描,这依赖于你所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C

类网以寻找可能得代理(译者:指agent而不是proxy)。Hacker/cracker也会寻找开放这种服务的机器,所以

应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。参见拨号扫描。

  6776 Sub-7 artifact

  这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器,而

被控机器挂断时你将会看到这种情况。因此当另一人以此IP拨入时,他们将会看到持续的,在这个端口的连接

企图。(译者:即看到防火墙报告这一端口的连接企图时,并不表示你已被Sub-7控制。)

  6970 RealAudio

  RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置

的。

  13223 PowWow

  PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非

常具有“进攻性”。它会“驻扎”在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨

号用户,从另一个聊天者手中“继承”了IP地址这种情况就会发生:好象很多不同的人在测试这一端口。这一

协议使用“OPNG”作为其连接企图的前四个字节。

  17027 Conducent

  这是一个外向连接。这是由于公司内部有人安装了带有Conducent "adbot" 的共享软件。Conducent

"adbot"是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验:阻断这一外向连

接不会有任何问题,但是封掉IP地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载:
机器会不断试图解析DNS名―ads.conducent.com,即IP地址216.33.210.40 ;216.33.199.77 ;216.33.199.80

;216.33.199.81;216.33.210.41。(译者:不知NetAnts使用的Radiate是否也有这种现象)

  27374 Sub-7木马(TCP)

  参见Subseven部分。

  30100 NetSphere木马(TCP)

  通常这一端口的扫描是为了寻找中了NetSphere木马。

  31337 Back Orifice “elite”

  Hacker中31337读做“elite”/ei’li:t/(译者:法语,译为中坚力量,精华。即3=E, 1=L, 7=T)。因此

许多后门程序运行于这一端口。其中较有名的是Back Orifice。曾经一段时间内这是Internet上较常见的扫描

。现在它的流行越来越少,其它的木马程序越来越流行。

  31789 Hack-a-tack

  这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马(RAT, Remote Access Trojan)。这种木马包

含内置的31790端口扫描器,因此任何31789端口到317890端口的连接意味着已经有这种入侵。(31789端口是控

制连接,317890端口是文件传输连接)

  32770~32900 RPC服务

  Sun Solaris的RPC服务在这一范围内。详细的说:早期版本的Solaris(2.5.1之前)将portmapper置于这

一范围内,即使低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了

寻找portmapper,就是为了寻找可被攻击的已知的RPC服务。

  33434~33600 traceroute

  如果你看到这一端口范围内的UDP数据包(且只在此范围之内)则可能是由于traceroute。参见traceroute

部分。

  41508 Inoculan

  早期版本的Inoculan会在子网内产生大量的UDP通讯用于识别彼此。参见
  http://www.circlemud.org/~jelson/software/udpsend.html
  http://www.ccd.bnl.gov/nss/tips/inoculan/index.html

  下面的这些源端口意味着什么?

  端口1~1024是保留端口,所以它们几乎不会是源端口。但有一些例外,例如来自NAT机器的连接。参见1.9

  常看见紧接着1024的端口,它们是系统分配给那些并不在乎使用哪个端口连接的应用程序的“动态端口”

  Server Client 服务 描述

  1-5/tcp 动态 FTP 1-5端口意味着sscan脚本

  20/tcp 动态 FTP FTP服务器传送文件的端口

  53 动态 FTP DNS从这个端口发送UDP回应。你也可能看见源/目标端口的TCP连接。

  123 动态 S/NTP 简单网络时间协议(S/NTP)服务器运行的端口。它们也会发送到这个端口的广播。

  27910~27961/udp 动态 Quake Quake或Quake引擎驱动的游戏在这一端口运行其服务器。因此来自这一端

  口范围的UDP包或发送至这一端口范围的UDP包通常是游戏。

  61000以上 动态 FTP 61000以上的端口可能来自Linux NAT服务器(IP Masquerade)

三、我发现一种对于同一系列端口的扫描来自于Internet上变化很大的源地址这通常是由于“诱骗”扫描(dec

oy scan),如nmap。其中一个是攻击者,其它的则不是。

  利用防火墙规则和协议分析我们可以追踪他们是谁?例如:如果你ping每个系统,你就可以将获得的TTL与

那些连接企图相匹配。这样你至少可以哪一个是“诱骗”扫描(TTL应该匹配,如果不匹配则他们是被“诱骗”

了)。不过,新版本的扫描器会将攻击者自身的TTL随机化,这样要找出他们回更困难。

  你可以进一步研究你的防火墙记录,寻找在同一子网中被诱骗的地址(人)。你通常会发现攻击者刚刚试

图对你连接,而被诱骗者不会。

四、特洛伊木马扫描是指什么?

  特洛伊木马攻击的较早步是将木马程序放置到用户的机器上。常见的伎俩有:

  1) 将木马程序发布在Newsgroup中,声称这是另一种程序。
  2) 广泛散布带有附件的E-mail
  3) 在其Web上发布木马程序
  4) 通过即时通讯软件或聊天系统发布木马程序(ICQ, AIM, IRC等)
  5) 伪造ISP(如AOL)的E-mail哄骗用户执行程序(如软件升级)
  6) 通过“文件与打印共享”将程序Copy至启动组

  下一步将寻找可被控制的机器。较大的问题是上述方法无法告知Hacker/Cracker受害者的机器在哪里。因

此,Hacker/Cracker扫描Internet。

  这就导致防火墙用户(包括个人防火墙用户)经常看到指向他们机器的扫描。他们的机器并没有被攻击,扫

描本身不会造成什么危害。扫描本身不会造成机器被攻击。真正的管理员会忽略这种“攻击”

  以下列出常见的这种扫描。为了发现你的机器是否被种了木马,运行“NETSTAT -an”。查看是否出现下

列端口的连接。

  Port Trojan
  555 phAse zero
  1243 Sub-7, SubSeven
  3129 Masters Paradise
  6670 DeepThroat
  6711 Sub-7, SubSeven
  6969 GateCrasher
  21544 GirlFriend
  12345 NetBus
  23456 EvilFtp  
  27374 Sub-7, Seven
  30100 NetSphere
  31789 Hack‘a‘Tack
  31337 BackOrifice, and many others
  50505 Sockets de Troie

  更多信息查看:http://www.commodon.com/threat/threat-ports.htm

  什么是SUBSEVEN(sub-7)

  Sub-7是较有名的远程控制木马之一。现在它已经成为易于使用,功能强大的一种木马。原因是:

  1〕它易于获得,升级迅速。大部分木马产生后除了修改bug以外开发就停止了。
  2〕这一程序不但包含一个扫描器,还能利用被控制的机器也进行扫描。
  3〕制作者曾比赛利用sub-7控制网站。
  4〕支持“端口重定向”,因此任何攻击者都可以利用它控制受害者的机器。
  5〕具有大量与ICQ, AOL IM, MSN Messager和Yahoo messenger相关的功能,包括密码嗅探,发送消息等。

  6〕 具有大量与UI相关的功能,如颠倒屏幕,用受害者扩音器发声,偷窥受害者屏幕。

  简而言之它不仅是一种hacking工具而且是一种玩具,恐吓受害者的玩具。

  Sub-7是由自称“Mobman”的人写的,他的站点是http://subseven.slak.org/。
  Sub-7可能使用以下端口:
  1243 老版本缺省连接端口
  2772 抓屏端口
  2773 键盘记录端口
  6711 ???
  6776 我并不清楚这个端口是干什么用的,但是它被作为一些版本的后面 (即不用密码也能连接)。
  7215 "matrix" chat程序
  27374 v2.0缺省端口
  54283 Spy端口
五、来自低端口的DNS包

  Q:我看见许多来自1024端口以下的DNS请求。这些服务是“保留”的吗?他们不是应该使用1024-65535端

口吗?

  A:他们来自于NAT防火墙后面的机器。NAT并不需要保留端口。(Ryan Russell >http://www.sybase.com/

  Q:我的防火墙丢弃了许多源端口低于1024的包,所以DNS查询失败。

  A:不要用这种方式过滤。许多防火墙有类似的规则,但这是一种误导。因为Hacker/Cracker能伪造任何端

口。

  Q:这些NAT防火墙工作不正常吗?

  A:理论上不是,但实际上会导致失败。正确的方式是在任何情况下完全保证DNS通讯。(尤其在那些“代

理”DNS并强迫DNS通过53端口的情况下)

  Q:我以为DNS查询应该使用1024端口以上的随机端口?

  A:实际上,一般DNS客户将使用非保留端口。但是有许多程序使用53端口。在任何情况下,NAT都会完全不

同,因为它改变了所有SOCKET(IP+port combo)

六、一旦我拨号连接到ISP后,我的个人防火墙就开始警告“有人在探测你的xxxx端口”。

  这种情况很常见。因为你使用ISP分配给你的IP,而在你使用之前刚有人使用。你看到的是上一个用户的“

残留”信息。

  常见的例子是聊天程序。如果有人刚刚挂断,刚才和他聊天的人会继续试图连接。一些程序的“超时”设

置很长。如POWWOW或ICQ。

  另一个例子是多人在线游戏。你会看到来自游戏提供者的通讯(如MPlayer),或其它不知名的游戏服务器

。这些游戏通常基于UDP,因此无法建立连接。但为了获得较好的用户感觉,他们对于建立连接又很“执着”。

以下是一些游戏的端口:

  7777 Unreal, Klingon Honor Guard
  7778 Unreal Tournament
  22450 Sin
  26000 Quake
  26900 Hexen 2
  26950 HexenWorld
  27015 Half-life, Team Fortress Classic (TFC)
  27500 QuakeWorld
  27910 Quake 2
  28000-28008 Starsiege TRIBES (TRIBES.DYNAMIX.COM)
  28910 Heretic 2

  另一个例子是多媒体广播、电视。如RealAudio客户端使用6970-7170端口接收声音数据。

  你需要连接的来源。例如ICQ服务器运行于4000端口,而其客户端使用更高的随机端口。这就是说你会看到

你会看到从4000端口到高端随机端口的UDP包。换句话说,不要试图查询端口列表找到随机高端端口的用途。重

要的是源端口。

  Sub-7也有类似问题。它使用不同的TCP连接用于不同的服务。如果受害者的机器下线,它会持续企图连接

受害者机器的端口,特别是6776端口。

七、IRC服务器在探测我

  较流行的聊天方式之一是IRC。这种聊天程序的特点之一就是它能告诉你正在和你聊天的人的IP地址。聊天

室的问题之一是:人们匿名登陆并四处闲逛,往往会遭遇跑题的评论、粗鲁的话语、被打断谈话、被服务器“

冲洗”或被其它客户踢下线。

  因此,服务器端和客户端都默认禁止在聊天室内使用匿名登陆。特别需要指出的是,当有人进入聊天室时

要检查他们是否通过其它代理服务器连接。较常见的这种扫描是SOCKS。假设你来的那个地方支持SOCKS,那么

你完全有可能有一台完全独立的机器,你试图通过明处的代理服务器隐藏你在暗处的真实身份。Undernet’s关

于这方面的策略可参考http://help.undernet.org/proxyscan.

  同时,crackers/hackers会试图扫描人们的机器以确定他们是否运行某种服务,可被他们用做跳板。同样

,通过检查SOCKS,攻击者希望发现某人打开了SOCKS,例如一个家庭的个人用户SOCKS实现共享连接,但将其错

误设置成Internet上所有用户都能通过它。
八、什么是“重定向”端口

 一种常见的技术是把一个端口重定向到另一个地址。例如默认的HTTP端口是80,许多人把他们重定向到令一

个端口,如8080(

这样,如果你打算访问本文就得写成http://www.robertgraham.com:8080/pu...ewall-seen.html )

  实现重定向是为了让端口更难被发现,从而使Hacker更难攻击。因为Hacker不能对一个公认的默认端口进

行攻击而必须进行端口扫描。

  大多数端口重定向与原端口有相似之处。因此,大多数HTTP端口由80变化而来:81,88,8000,8080,888

8。同样POP的端口原来在110,也常被重定向到1100。

  也有不少情况是选取统计上有特别意义的数,象1234,23456,34567等。许多人有其它原因选择奇怪的数

,42,69,666,31337。近来,越来越多的远程控制木马( Remote Access Trojans, RATs )采用相同的默认端

口。如NetBus的默认端口是12345。

  Blake R.

Swopes指出使用重定向端口还有一个原因,在UNIX系统上,如果你想侦听1024以下的端口需要有root权限。如果

你没有root权限而又想开web服务,你就需要将其安装在较高的端口。此外,一些ISP的防火墙将阻挡低端口的

通讯,所以即使你拥有整个机器你还是得重定向端口。
九、我还是不明白当某人试图连接我的某个端口时我该怎么办?

  你可以使用Netcat建立一个侦听进程。例如,你想侦听1234端口:
  NETCAT -L -p 1234

  许多协议都会在连接开始的部分发送数据。当使用Netcat侦听某个端口时,你能想办法搞清在使用什么协

议。如果幸运的话,你会发现是HTTP协议,它会为你提供大量信息,使你能追踪发生的事情。

  “-L”参数是让Netcat持续侦听。正常情况下Netcat会接受一个连接,复制其内容,并退出。加上这个参

数后,它可以持续运行以侦听多个连接。

ICMP

  TCP和UDP能承载数据,但ICMP仅包含控制信息。因此,ICMP信息不能真正用于入侵其它机器。Hacker们使

用ICMP通常是为了扫描网络,发动DoS攻击,重定向网络交通。(这个观点似乎不正确,可参考shotgun关于木马

的文章,译者注)

  一些防火墙将ICMP类型错误标记成端口。要记住,ICMP不象TCP或UDP有端口,但它确实含有两个域:类型(

type)和代码(code)。而且这些域的作用和端口也完全不同,也许正因为有两个域所以防火墙常错误地标记了他

们。更多关于ICMP的知识请参考Infosec Lexicon entry on ICMP。
  关于ICMP类型/代码的含义的官方说明请参阅http://www.isi.edu/in-notes/iana/assignments/icmp-para

meters。该文献描述官方含义,而本文描述Hacker的企图,详见下文。

  类型 代码 名称 含义
  0 * Echo replay 对ping的回应
  3 * Destination Unreachable 主机或路由器返回信息:一些包未达到目的地
  0 Net Unreachable 路由器配置错误或错误指定IP地址
  1 Host Unreachable 较后一个路由器无法与主机进行ARP通讯
  3 Port unreachable 服务器告诉客户端其试图联系的端口无进程侦听
  4 Fragmentation Needed but DF set 重要:如果你在防火墙丢弃记录中发现这些包,你应该让他们通过

否则你的客户端将发现TCP连接莫名其妙地断开
  4 * Source Quench Internet阻塞
  5 * Redirect 有人试图重定向你的默认路由器,可能Hacker试图对你进行“man-in-middle”的攻击,使

你的机器通过他们的机器路由。
  8 * Echo Request ping
  9 * Router Advertisement hacker可能通过重定向你的默认的路由器DoS攻击你的Win9x 或Solaris。邻近

的Hacker也可以发动man-in-the-middle的攻击
  10 * Time Exceeded In Transit 因为超时包未达到目的地
  0 TTL Exceeded 因为路由循环或由于运行traceroute,路由器将包丢弃
  1 Fragment reassembly timeout 由于没有收到所有片断,主机将包丢弃
  11 * Parameter Problem 发生某种不正常,可能遇到了攻击

  (一) type=0 (Echo reply)

  发送者在回应由你的地址发送的ping,可能是由于以下原因:

  有人在ping那个人:防火墙后面有人在ping目标。

  自动ping:许多程序为了不同目的使用ping,如测试联系对象是否在线,或测定反应时间。很可能是使用

了类似VitalSign‘s Net.Medic的软件,它会发送不同大小的ping包以确定连接速度。

  诱骗ping扫描:有人在利用你的IP地址进行ping扫描,所以你看到回应。

  转变通讯信道:很多网络阻挡进入的ping(type=8),但是允许ping回应(type=0)。因此,Hacker已经开始

利用ping回应穿透防火墙。例如,针对internet站点的DdoS攻击,其命令可能被嵌入ping回应中,然后洪水般

的回应将发向这些站点而其它Internet连接将被忽略。

  (二) Type=3 (Destination Unreachable)

  在无法到达的包中含有的代码(code)很重要记住这可以用于击败“SYN洪水攻击”。即如果正在和你通讯的

主机受到“SYN洪水攻击”,只要你禁止ping(type=3)进入,你就无法连接该主机。

  有些情况下,你会收到来自你从未听说的主机的ping(type=3)包,这通常意味着“诱骗扫描”。攻击者使

用很多源地址向目标发送一个伪造的包,其中有一个是真正的地址。Hacker的理论是:受害者不会费力从许多

假地址中搜寻真正的地址。

  解决这个问题的较好办法是:检查你看到的模式是否与“诱骗扫描”一致。比如,在ICMP包中的TCP或UDP

头部分寻找交互的端口。

  1) Type = 3, Code = 0 (Destination Net Unreachable)

  无路由器或主机:即一个路由器对主机或客户说,:“我根本不知道在网络中如何路由!包括你正连接的

主机”。这意味着不是客户选错了IP地址就是某处的路由表配置错误。记住,当你把自己UNIX机器上的路由表

搞乱后你就会看到“无路由器或主机”的信息。这常发生在配置点对点连接的时候。

  2) Type = 3, Code = 3 (Destination Port Unreachable)

  这是当客户端试图连击一个并不存在的UDP端口时服务器发送的包。例如,如果你向161端口发送SNMP包,

但机器并不支持SNMP服务,你就会收到ICMP Destination Port Unreachable包。

  解码的方案

  解决这个问题的较早件事是:检查包中的端口。你可能需要一个嗅探器,因为防火墙通常不会记录这种信

息。这种方法基于ICMP原始包头包含IP和UDP头。以下是复制的一个ICMP unreachable包:

  00 00 BA 5E BA 11 00 60 97 07 C0 FF 08 00 45 00
  00 38 6F DF 00 00 80 01 B4 12 0A 00 01 0B 0A 00
  01 C9 03 03 C2 D2 00 00 00 00 45 00 00 47 07 F0
  00 00 80 11 1B E3 0A 00 01 C9 0A 00 01 0B 08 A7
  79 19 00 33 B8 36

  其中字节03 03是ICMP的类型和代码。较后8个字节是原始UDP头,解码如下:

  08A7 UDP源端口 port=2215,可能是临时分配的,并不是很重要。
  7919 UDP目标端口 port=31001,很重要,可能原来用户想连接31001端口的服务。
  0033 UDP长度 length=51,这是原始UDP数据的长度,可能很重要。
  B836 UDP校验和 checksum=0xB836,可能不重要。

  你为什么会看到这些?

  “诱骗UDP扫描”:有人在扫描向你发送ICMP的机器。他们伪造源地址,其中之一是你的IP地址。他们实际

上伪造了许多不同的源地址使受害者无法确定谁是攻击者。如果你在短时间内收到大量来自同一地址的这种包

,很有可能是上述情况。检查UDP源端口,它总在变化的话,很可能是Scenario。

  “陈旧DNS”:客户端会向服务器发送DNS请求,这将花很长时间解析。当你的DNS服务器回应的时候,客户

端可能已经忘记你并关闭了用于接受你回应的UDP端口。如果发现UDP端口值是53,大概就发生了这种情况。这

是怎么发生的?服务器可能在解析一个递归请求,但是它自己的包丢失了,所以它只能超时然后再试。当回到

客户时,客户认为超时了。许多客户程序(尤其是Windows中的程序)自己做DNS解析。即它们自己建立SOCKET进

行DNS解析。如果它们把要求交给操作系统,操作系统就会一直把端口开在那里。

  “多重DNS回应”:另一种情况是客户收到对于一个请求的多重回应。收到一个回应,端口就关闭了,后序

的回应无法达到。此外,一个Sun机器与同一个以太网中的多个NICs连接时,将为两个NICs分配相同的MAC地址

,这样Sun机器每桢会收到两个拷贝,并发送多重回复。还有,一个编写的很糟糕的客户端程序(特别是那些吹

嘘是多线程DNS解析但实际上线程不安全的程序)有时发送多重请求,收到较早个回应后关闭了Socket。但是,

这也可能是DNS欺骗,攻击者既发送请求由发送回应,企图使解析缓存崩溃。

  “NetBIOS解析”:如果Windows机器接收到ICMP包,看看UDP目标端口是否是137。如果是,那就是windows

机器企图执行gethostbyaddr()函数,它将将会同时使用DNS和NetBIOS解析IP地址。DNS请求被发送到某处的DNS

服务器,但NetBIOS直接发往目标机器。如果目标机器不支持NetBIOS,目标机器将发送ICMP unreachable。

  “Traceroute”:大多数Traceroute程序(Windows中的Tracert.exe除外)向关闭的端口发送UDP包。这引起

一系列的背靠背的ICMP Port Unreachable包发回来。因此你看到防火墙显示这样ICMP包,可能是防火墙后面的

人在运行Traceroute。你也会看到TTL增加。

  3) Type = 3, Code = 4 (Fragmentation Needed and Don‘t Fragment was Set)

  这是由于路由器打算发送标记有(DF, 不允许片断)的IP报文引起的。为什么?IP和TCP都将报文分成片断。

TCP在管理片断方面比IP有效得多。因此,饯堆趋向于找到“Path MTU”(路由较大传输单元)。在这个过程将

发送这种ICMP包。

  假设ALICE和BOB交谈。他们在同一个以太网上(max frame size = 1500 bytes),但是中间有连接限制较大

IP包为600 byte。这意味着所有发送的IP包都要由路由器切割成3个片断。因此在TCP层分割片断将更有效。TCP

层将试图找到MTU(较大传输单元)。它将所有包设置DF位(Don‘t Fragment),一旦这种包碰到不能传输如此大

的包的路由器时路由器将发回ICMP错误信息。由此,TCP层能确定如何正确分割片断。

  你也许应该允许这些包通过防火墙。否则,当小的包可以通过达到目的地建立连接,而大包会莫名其妙的

丢失断线。通常的结果是,人们只能看到Web页仅显示一半。

  路由较大传输单元的发现越来越整合到通讯中。如IPsec需要用到这个功能。

  (三) Type = 4 (Source Quench)

  这种包可能是当网络通讯超过极限时由路由器或目的主机发送的。但是当今的许多系统不生成这些包。原

因是现在相信简单包丢失是网络阻塞的较后信号(因为包丢失的原因就是阻塞)。

  现在source quenches的规则是(RFC 1122):
  路由器不许生成它们
  主机可以生成它们
  主机不能随便生成它们
  防火墙应该丢弃它们

  但是,主机遇到Source Quench仍然减慢通讯,因此这被用于DoS。防火墙应该过滤它们。如果怀疑发生DoS

,包中的源地址是无意义的,因为IP地址肯定是虚构的。

  已知某些SMTP服务器会发送Source Quench。

  (四) Type = 8 (Echo aka PING)

  这是ping请求包。有很多场合使用它们;它可能意味着某人扫描你机器的恶意企图,但它也可能是正常网

络功能的一部分。参见Type = 0 (Echo Response)

  很多网络管理扫描器会生成特定的ping包。包括ISS扫描器,WhatsUp监视器等。这在扫描器的有效载荷中

可见。许多防火墙并不记录这些,因此你需要一些嗅探器捕捉它们或使用入侵检测系统(IDS)标记它们。

  记住,阻挡ping进入并不意味着Hacker不能扫描你的网络。有许多方法可以代替。例如,TCP ACK扫描越来

越流行。它们通常能穿透防火墙而引起目标系统不正常的反应。

  发送到广播地址(如x.x.x.0或x.x.x.255)的ping可能在你的网络中用于smurf放大。

  (五) Type = 11 (Time Exceeded In Transit)

  这一般不会是Hacker或Cracker的攻击

  1) Type = 11, Code = 0 (TTL Exceeded In Transit)

  这可能有许多事情引起。如果有人从你的站点traceroute到Internet,你会看到许多来自路由器的TTL增加

的包。这就是traceroute的工作原理:强迫路由器生成TTL增加的信息来发现路由器。

  防火墙管理员看到这种情况的原因是Internet上发生路由循环。路由器Flapping(持续变换路由器)是一个

常见的问题,常会导致循环。这意味着当一个IP包朝目的地前进时,这个包被一个路由器错误引导至一个它曾

经通过的路由器。如果路由器在包经过的时候把TTL域减一,这个包只好循环运动。实际上当TTL值为0时它被丢

弃。

  造成这种情况的另一个原因是距离。许多机器(Windows)的默认TTL值是127或更低。路由器也常常会把TTL

值减去大于1的值,以便反应诸如电话拨号或跨洋连接的慢速连接。因此,可能由于初始TTL值太小,而使站点

无法到达。此外,一些Hacker/Cracker也会使用这种办法使站点无法到达。

  2) Type = 11, Code = 1 (Fragment Reassembly Time Exceeded)

  当发送分割成片断的IP报文时,发送者并不接收所有片断。通常,大多数TCP/IP通讯甚至不分割片断。你

看到这种情况必定是采用了分割片断而且你和目的地之间有阻塞。

  (六) Type = 12 (Parameter Problem)

  这可能意味着一种进攻。有许多足印技术会生成这种包。

  • TAG: