上篇文章中,我们针对“网络通信原理”做了详细描述,在通信原理里也提到了端口这个概念,但是没有详细讲解,今天我详细讲解一下“网络协议端口”,因为这个“东东”也是黑客们常常利用渗透入侵的手段。
一、先讲一讲几种不同的“端口”的定义
计算机"端口"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。
软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。
而我们今天要讲的“网络协议端口”不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
二、网络协议端口简单描述
网络协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:256×256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(256×256)。
在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续听我继续讲解。
端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
三、“网络协议端口”详解
常常在网络上听说“我的主机开了多少的 port ,会不会被入侵呀!?”或者是说“开那个 port 会比较安全?又,我的服务应该对应什么 port 呀!?”很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?这个 port 有什么作用呢?!
由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了 FTP 与 WWW 服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会错乱!很多人会问说:“为什么计算机同时有 FTP、WWW、E-Mail 这么多服务,传资料过来,计算机怎么知道如何判断?计算机真的都不会误判吗?”现在知道为什么了吧?!“对啦!就是因为 port 不同嘛”!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题。
每一个 TCP 联机都必须由一端(通常为 client )发起请求这个 port 通常是随机选择大于 1024 以上的 port 号来进行!其 TCP 封包会将(且只将) SYN 旗标设定起来!这是整个联机的第一个封包; 如果另一端(通常为 Server ) 接受这个请求的话(当然,特殊的服务需要以特殊的 port 来进行,例如 FTP 的port 21 ),则会向请求端送回整个联机的第二个封包!其上除了 SYN 旗标之外同时还将 ACK 旗标也设定起来,并同时时在本机端建立资源以待联机之需;然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK 旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标);
只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的'三段式交握( Three-Way Handshake )'的原理。经过三向交握之后,你的 client 端的 port 通常是高于 1024 的随机取得的 port 至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择80 而 FTP 则以 21 为正常的联机信道!
四、端口的分类
1. 按对应的协议类型端口有两种
一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。
由网络OSI七层协议可知,TCP/UDP是工作在传输层的,传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。
在应用程序中(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口叫周知口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。
2. 按端口号可分为3大类:
- 公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
- 注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
- 动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
五、已知服务、木马常用端口列表
1. TCP端口
- 7 = 回显
- 9 = 丢弃
- 11 = 在线用户
- 13 = 时间服务
- 15 = 网络状态
- 17 = 每日引用
- 18 = 消息发送
- 19 = 字符发生器
- 20 = ftp数据
- 21 = 文件传输
- 22 = SSH端口
- 23 = 远程终端
- 25 = 发送邮件
- 31 = Masters Paradise木马
- 37 = 时间
- 39 = 资源定位协议
- 41 = DeepThroat木马
- 42 = WINS 主机名服务
- 43 = WhoIs服务
- 58 = DMSetup木马
- 59 = 个人文件服务
- 63 = WHOIS端口
- 69 = TFTP服务
- 70 = 信息检索
- 79 = 查询在线用户
- 80 = WEB网页
- 88 = Kerberros5认证
- 101 = 主机名
- 102 = ISO
- 107 = 远程登录终端
- 109 = pop2邮件
- 110 = pop3邮件
- 111 = SUN远程控制
- 113 = 身份验证
- 117 = UUPC
- 119 = nntp新闻组
- 121 = JammerKillah木马
- 135 = 本地服务
- 138 = 隐形大盗
- 139 = 文件共享
- 143 = IMAP4邮件
- 146 = FC-Infector木马
- 158 = 邮件服务
- 170 = 打印服务
- 179 = BGP
- 194 = IRC PORT
- 213 = TCP OVER IPX
- 220 = IMAP3邮件
- 389 = 目录服务
- 406 = IMSP PORT
- 411 = DC++
- 421 = TCP Wrappers
- 443 = 安全WEB访问
- 445 = SMB(交换服务器消息块)
- 456 = Hackers Paradise木马
- 464 = Kerberros认证
- 512 = 远程执行或卫星通讯
- 513 = 远程登录与查询
- 514 = SHELL/系统日志
- 515 = 打印服务
- 517 = Talk
- 518 = 网络聊天
- 520 = EFS
- 525 = 时间服务
- 526 = 日期更新
- 530 = RPC
- 531 = RASmin木马
- 532 = 新闻阅读
- 533 = 紧急广播
- 540 = UUCP
- 543 = Kerberos登录
- 544 = 远程shell
- 550 = who
- 554 = RTSP
- 555 = Ini-Killer木马
- 556 = 远程文件系统
- 560 = 远程监控
- 561 = 监控
- 636 = 安全目录服务
- 666 = Attack FTP木马
- 749 = Kerberos管理
- 750 = Kerberos V4
- 911 = Dark Shadow木马
- 989 = FTPS
- 990 = FTPS
- 992 = TelnetS
- 993 = IMAPS
- 999 = DeepThroat木马
- 1001 = Silencer木马
- 1010 = Doly木马
- 1011 = Doly木马
- 1012 = Doly木马
- 1015 = Doly木马
- 1024 = NetSpy木马
- 1042 = Bla木马
- 1045 = RASmin木马
- 1080 = SOCKS代理
- 1090 = Extreme木马
- 1095 = Rat木马
- 1097 = Rat木马
- 1098 = Rat木马
- 1099 = Rat木马
- 1109 = Kerberos POP
- 1167 = 私用电话
- 1170 = Psyber Stream Server
- 1214 = KAZAA下载
- 1234 = Ultors/恶鹰木马
- 1243 = Backdoor/SubSeven木马
- 1245 = VooDoo Doll木马
- 1349 = BO DLL木马
- 1352 = Lotus Notes
- 1433 = SQL SERVER
- 1492 = FTP99CMP木马
- 1494 = CITRIX
- 1503 = Netmeeting
- 1512 = WINS解析
- 1524 = IngresLock后门
- 1600 = Shivka-Burka木马
- 1630 = 网易泡泡
- 1701 = L2TP
- 1720 = H323
- 1723 = PPTP(虚拟专用网)
- 1731 = Netmeeting
- 1755 = 流媒体服务
- 1807 = SpySender木马
- 1812 = Radius认证
- 1813 = Radius评估
- 1863 = MSN聊天
- 1981 = ShockRave木马
- 1999 = Backdoor木马
- 2000 = TransScout-Remote-Explorer木马
- 2001 = TransScout木马
- 2002 = TransScout/恶鹰木马
- 2003 = TransScout木马
- 2004 = TransScout木马
- 2005 = TransScout木马
- 2023 = Ripper木马
- 2049 = NFS服务器
- 2053 = KNETD
- 2115 = Bugs木马
- 2140 = Deep Throat木马
- 2401 = CVS
- 2535 = 恶鹰
- 2565 = Striker木马
- 2583 = WinCrash木马
- 2773 = Backdoor/SubSeven木马
- 2774 = SubSeven木马
- 2801 = Phineas Phucker木马
- 2869 = UPNP(通用即插即用)
- 3024 = WinCrash木马
- 3050 = InterBase
- 3128 = squid代理
- 3129 = Masters Paradise木马
- 3150 = DeepThroat木马
- 3306 = MYSQL
- 3389 = 远程桌面
- 3544 = MSN语音
- 3545 = MSN语音
- 3546 = MSN语音
- 3547 = MSN语音
- 3548 = MSN语音
- 3549 = MSN语音
- 3550 = MSN语音
- 3551 = MSN语音
- 3552 = MSN语音
- 3553 = MSN语音
- 3554 = MSN语音
- 3555 = MSN语音
- 3556 = MSN语音
- 3557 = MSN语音
- 3558 = MSN语音
- 3559 = MSN语音
- 3560 = MSN语音
- 3561 = MSN语音
- 3562 = MSN语音
- 3563 = MSN语音
- 3564 = MSN语音
- 3565 = MSN语音
- 3566 = MSN语音
- 3567 = MSN语音
- 3568 = MSN语音
- 3569 = MSN语音
- 3570 = MSN语音
- 3571 = MSN语音
- 3572 = MSN语音
- 3573 = MSN语音
- 3574 = MSN语音
- 3575 = MSN语音
- 3576 = MSN语音
- 3577 = MSN语音
- 3578 = MSN语音
- 3579 = MSN语音
- 3700 = Portal of Doom木马
- 4080 = WebAdmin
- 4081 = WebAdmin+SSL
- 4092 = WinCrash木马
- 4267 = SubSeven木马
- 4443 = AOL MSN
- 4567 = File Nail木马
- 4590 = ICQ木马
- 4661 = 电驴下载
- 4662 = 电驴下载
- 4663 = 电驴下载
- 4664 = 电驴下载
- 4665 = 电驴下载
- 4666 = 电驴下载
- 4899 = Radmin木马
- 5000 = Sokets-de木马
- 5000 = UPnP(通用即插即用)
- 5001 = Back Door Setup木马
- 5060 = SIP
- 5168 = 高波蠕虫
- 5190 = AOL MSN
- 5321 = Firehotcker木马
- 5333 = NetMonitor木马
- 5400 = Blade Runner木马
- 5401 = Blade Runner木马
- 5402 = Blade Runner木马
- 5550 = JAPAN xtcp木马
- 5554 = 假警察蠕虫
- 5555 = ServeMe木马
- 5556 = BO Facil木马
- 5557 = BO Facil木马
- 5569 = Robo-Hack木马
- 5631 = pcAnywhere
- 5632 = pcAnywhere
- 5742 = WinCrash木马
- 5800 = VNC端口
- 5801 = VNC端口
- 5890 = VNC端口
- 5891 = VNC端口
- 5892 = VNC端口
- 6267 = 广外女生
- 6400 = The Thing木马
- 6665 = IRC
- 6666 = IRC SERVER PORT
- 6667 = 小邮差
- 6668 = IRC
- 6669 = IRC
- 6670 = DeepThroat木马
- 6711 = SubSeven木马
- 6771 = DeepThroat木马
- 6776 = BackDoor-G木马
- 6881 = BT下载
- 6882 = BT下载
- 6883 = BT下载
- 6884 = BT下载
- 6885 = BT下载
- 6886 = BT下载
- 6887 = BT下载
- 6888 = BT下载
- 6889 = BT下载
- 6890 = BT下载
- 6939 = Indoctrination木马
- 6969 = GateCrasher/Priority木马
- 6970 = GateCrasher木马
- 7000 = Remote Grab木马
- 7001 = Windows messager
- 7070 = RealAudio控制口
- 7215 = Backdoor/SubSeven木马
- 7300 = 网络精灵木马
- 7301 = 网络精灵木马
- 7306 = 网络精灵木马
- 7307 = 网络精灵木马
- 7308 = 网络精灵木马
- 7424 = Host Control Trojan
- 7467 = Padobot
- 7511 = 聪明基因
- 7597 = QaZ木马
- 7626 = 冰河木马
- 7789 = Back Door Setup/ICKiller木马
- 8011 = 无赖小子
- 8102 = 网络神偷
- 8181 = 灾飞
- 9408 = 山泉木马
- 9535 = 远程管理
- 9872 = Portal of Doom木马
- 9873 = Portal of Doom木马
- 9874 = Portal of Doom木马
- 9875 = Portal of Doom木马
- 9898 = 假警察蠕虫
- 9989 = iNi-Killer木马
- 10066 = Ambush Trojan
- 10067 = Portal of Doom木马
- 10167 = Portal of Doom木马
- 10168 = 恶邮差
- 10520 = Acid Shivers木马
- 10607 = COMA木马
- 11000 = Senna Spy木马
- 11223 = Progenic木马
- 11927 = Win32.Randin
- 12076 = GJammer木马
- 12223 = Keylogger木马
- 12345 = NetBus木马
- 12346 = GabanBus木马
- 12361 = Whack-a-mole木马
- 12362 = Whack-a-mole木马
- 12363 = Whack-a-Mole木马
- 12631 = WhackJob木马
- 13000 = Senna Spy木马
- 13223 = PowWow聊天
- 14500 = PC Invader木马
- 14501 = PC Invader木马
- 14502 = PC Invader木马
- 14503 = PC Invader木马
- 15000 = NetDemon木马
- 15382 = SubZero木马
- 16484 = Mosucker木马
- 16772 = ICQ Revenge木马
- 16969 = Priority木马
- 17072 = Conducent广告
- 17166 = Mosaic木马
- 17300 = Kuang2 the virus Trojan
- 17449 = Kid Terror Trojan
- 17499 = CrazzyNet Trojan
- 17500 = CrazzyNet Trojan
- 17569 = Infector Trojan
- 17593 = Audiodoor Trojan
- 17777 = Nephron Trojan
- 19191 = 蓝色火焰
- 19864 = ICQ Revenge木马
- 20001 = Millennium木马
- 20002 = Acidkor Trojan
- 20005 = Mosucker木马
- 20023 = VP Killer Trojan
- 20034 = NetBus 2 Pro木马
- 20808 = QQ女友
- 21544 = GirlFriend木马
- 22222 = Proziack木马
- 23005 = NetTrash木马
- 23006 = NetTrash木马
- 23023 = Logged木马
- 23032 = Amanda木马
- 23432 = Asylum木马
- 23444 = 网络公牛
- 23456 = Evil FTP木马
- 23456 = EvilFTP-UglyFTP木马
- 23476 = Donald-Dick木马
- 23477 = Donald-Dick木马
- 25685 = Moonpie木马
- 25686 = Moonpie木马
- 25836 = Trojan-Proxy
- 25982 = Moonpie木马
- 26274 = Delta Source木马
- 27184 = Alvgus 2000 Trojan
- 29104 = NetTrojan木马
- 29891 = The Unexplained木马
- 30001 = ErrOr32木马
- 30003 = Lamers Death木马
- 30029 = AOL木马
- 30100 = NetSphere木马
- 30101 = NetSphere木马
- 30102 = NetSphere木马
- 30103 = NetSphere 木马
- 30103 = NetSphere木马
- 30133 = NetSphere木马
- 30303 = Sockets de Troie
- 30947 = Intruse木马
- 31336 = Butt Funnel木马
- 31337 = Back-Orifice木马
- 31338 = NetSpy DK 木马
- 31339 = NetSpy DK 木马
- 31666 = BOWhack木马
- 31785 = Hack Attack木马
- 31787 = Hack Attack木马
- 31788 = Hack-A-Tack木马
- 31789 = Hack Attack木马
- 31791 = Hack Attack木马
- 31792 = Hack-A-Tack木马
- 32100 = Peanut Brittle木马
- 32418 = Acid Battery木马
- 33333 = Prosiak木马
- 33577 = Son of PsychWard木马
- 33777 = Son of PsychWard木马
- 33911 = Spirit 2000/2001木马
- 34324 = Big Gluck木马
- 34555 = Trinoo木马
- 35555 = Trinoo木马
- 36549 = Trojan-Proxy
- 37237 = Mantis Trojan
- 40412 = The Spy木马
- 40421 = Agent 40421木马
- 40422 = Master-Paradise木马
- 40423 = Master-Paradise木马
- 40425 = Master-Paradise木马
- 40426 = Master-Paradise木马
- 41337 = Storm木马
- 41666 = Remote Boot tool木马
- 46147 = Backdoor.sdBot
- 47262 = Delta Source木马
- 49301 = Online KeyLogger木马
- 50130 = Enterprise木马
- 50505 = Sockets de Troie木马
- 50766 = Fore木马
- 51996 = Cafeini木马
- 53001 = Remote Windows Shutdown木马
- 54283 = Backdoor/SubSeven木马
- 54320 = Back-Orifice木马
- 54321 = Back-Orifice木马
- 55165 = File Manager木马
- 57341 = NetRaider木马
- 58339 = Butt Funnel木马
- 60000 = DeepThroat木马
- 60411 = Connection木马
- 61348 = Bunker-hill木马
- 61466 = Telecommando木马
- 61603 = Bunker-hill木马
- 63485 = Bunker-hill木马
- 65000 = Devil木马
- 65390 = Eclypse木马
- 65432 = The Traitor木马
- 65535 = Rc1木马
2. UDP端口
- 31 = Masters Paradise木马
- 41 = DeepThroat木马
- 53 = 域名解析
- 67 = 动态IP服务
- 68 = 动态IP客户端
- 135 = 本地服务
- 137 = NETBIOS名称
- 138 = NETBIOS DGM服务
- 139 = 文件共享
- 146 = FC-Infector木马
- 161 = SNMP服务
- 162 = SNMP查询
- 445 = SMB(交换服务器消息块)
- 500 = VPN密钥协商
- 666 = Bla木马
- 999 = DeepThroat木马
- 1027 = 灰鸽子
- 1042 = Bla木马
- 1561 = MuSka52木马
- 1900 = UPNP(通用即插即用)
- 2140 = Deep Throat木马
- 2989 = Rat木马
- 3129 = Masters Paradise木马
- 3150 = DeepThroat木马
- 3700 = Portal of Doom木马
- 4000 = QQ聊天
- 4006 = 灰鸽子
- 5168 = 高波蠕虫
- 6670 = DeepThroat木马
- 6771 = DeepThroat木马
- 6970 = ReadAudio音频数据
- 8000 = QQ聊天
- 8099 = VC远程调试
- 8225 = 灰鸽子
- 9872 = Portal of Doom木马
- 9873 = Portal of Doom木马
- 9874 = Portal of Doom木马
- 9875 = Portal of Doom木马
- 10067 = Portal of Doom木马
- 10167 = Portal of Doom木马
- 22226 = 高波蠕虫
- 26274 = Delta Source木马
- 31337 = Back-Orifice木马
- 31785 = Hack Attack木马
- 31787 = Hack Attack木马
- 31788 = Hack-A-Tack木马
- 31789 = Hack Attack木马
- 31791 = Hack Attack木马
- 31792 = Hack-A-Tack木马
- 34555 = Trin00 DDoS木马
- 40422 = Master-Paradise木马
- 40423 = Master-Paradise木马
- 40425 = Master-Paradise木马
- 40426 = Master-Paradise木马
- 47262 = Delta Source木马
- 54320 = Back-Orifice木马
- 54321 = Back-Orifice木马
- 60000 = DeepThroat木马
六、查看端口的相关方法和工具
1. netstat -an
在cmd中输入这个命令就可以了。如下:
- C:>netstat -an
- Active Connections
- Proto Local Address Foreign Address State
- TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
- TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
- TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
- TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
- TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING
- TCP 0.0.0.0:3372 0.0.0.0:0 LISTENING
- UDP 0.0.0.0:135 *:*
- UDP 0.0.0.0:445 *:*
- UDP 0.0.0.0:1027 *:*
- UDP 127.0.0.1:1029 *:*
- UDP 127.0.0.1:1030 *:*
这是我没上网的时候机器所开的端口,两个135和445是固定端口,其余几个都是动态端口。
2. Strobe
超级优化TCP端口检测程序Strobe是一个TCP端口扫描器。它具有在最大带宽利用率和最小进程资源需求下,迅速地定位和扫描一台远程目标主机或许多台主机的所有TCP“监听”端口的能力。
3. Internet Scanner
Internet Scanner可以说是可得到的最快和功能最全的安全扫描工具,用于UNIX和Windows NT。它容易配置,扫描速度快,并且能产生综合报告。
4. Port Scanner
Port Scanner是一个运行于Windows 95 和Windows NT上的端口扫描工具,其开始界面上显示了两个输入框,上面的输入框用于要扫描的开始主机IP地址,下面的输入框用于输入要扫描的结束主机IP地址。在这两个IP地址之间的主机将被扫描。
5. Nmap
世界上最受黑客欢迎的扫描器,能实现秘密扫描、动态延迟、重发与平行扫描、欺骗扫描、端口过滤探测、RPC直接扫描、分布扫描等,灵活性非常好,功能强大
七、端口在入侵中的作用,我们该如何保护?
1. 端口在入侵中的作用
黑客曾经把目标终端比作房子,而把端口比作通向不同房间(服务)的门,入侵者要占领这间房子,势必要破门而入,那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。
2. 常被黑客利用的端口
一些端口常常会被黑客利用,还会被一些木马病毒利用,对计算机系统进行攻击,以下是被黑客入侵的的端口分析。
(1) 端口渗透剖析
FTP通常用作对远程服务器进行管理,典型应用就是对web系统进行管理。一旦FTP密码泄露就直接威胁web系统安全,甚至黑客通过提权可以直接控制服务器。这里以Serv_uFTP服务器为例,剖析渗透FTP服务器的几种方法。
- 对Serv_u5.004以及以下版本可直接使用溢出程序进行远程溢出,成功后可直接得到系统权限。使用kali 里面的metespolit渗透工具包进行溢出。这个工具是需要安装的。
- 暴力破解FTP密码,关键是字典的制作。一般用的破解工具是X-way。
- 读取Serv_u用户配置文件,并破解用户加密密码。一般使用webshell进行读取。
- 通过本地提权工具,可执行任意系统命令。
- 使用嗅探方式截取FTP密码,使用工具Cain进行渗透。
(2) 23端口渗透剖析
telnet是一种旧的远程管理方式,使用telnet工具登录系统过程中,网络上传输的用户和密码都是以明文方式传送的,黑客可使用嗅探技术截获到此类密码。
- 暴力破解技术是常用的技术,使用X-SCAN扫描器对其进行破解。
- 在linux系统中一般采用SSH进行远程访问,传输的敏感数据都是经过加密的。而对于windows下的telnet来说是脆弱的,因为默认没有经过任何加密就在网络中进行传输。使用cain等嗅探工具可轻松截获远程登录密码。
(3) 53端口渗透剖析
53端口是DNS域名服务器的通信端口,通常用于域名解析。也是网络中非常关键的服务器之一。这类服务器容易受到攻击。对于此端口的渗透,一般有三种方式。
- 使用DNS远程溢出漏洞直接对其主机进行溢出攻击,成功后可直接获得系统权限。
- 使用DNS欺骗攻击,可对DNS域名服务器进行欺骗,如果黑客再配合网页木马进行挂马攻击,无疑是一种杀伤力很强的攻击,黑客可不费吹灰之力就控制内网的大部分主机。这也是内网渗透惯用的技法之一。
- 拒绝服务攻击,利用拒绝服务攻击可快速的导致目标服务器运行缓慢,甚至网络瘫痪。如果使用拒绝服务攻击其DNS服务器。将导致用该服务器进行域名解析的用户无法正常上网。
(4) 80端口渗透剖析
80端口通常提供web服务。目前黑客对80端口的攻击典型是采用SQL注入的攻击方法,脚本渗透技术也是一项综合性极高的web渗透技术,同时脚本渗透技术对80端口也构成严重的威胁。
- 对于windows2000的IIS5.0版本,黑客使用远程溢出直接对远程主机进行溢出攻击,成功后直接获得系统权限。
- 对于windows2000中IIS5.0版本,黑客也尝试利用‘Microsoft IISCGI’文件名错误解码漏洞攻击。使用X-SCAN可直接探测到IIS漏洞。
- IIS写权限漏洞是由于IIS配置不当造成的安全问题,攻击者可向存在此类漏洞的服务器上传恶意代码,比如上传脚本木马扩大控制权限。
- 普通的http封包是没有经过加密就在网络中传输的,这样就可通过嗅探类工具截取到敏感的数据。如使用Cain工具完成此类渗透。
- 80端口的攻击,更多的是采用脚本渗透技术,利用web应用程序的漏洞进行渗透是目前很流行的攻击方式。
- 对于渗透只开放80端口的服务器来说,难度很大。利用端口复用工具可解决此类技术难题。
- CC攻击效果不及DDOS效果明显,但是对于攻击一些小型web站点还是比较有用的。CC攻击可使目标站点运行缓慢,页面无法打开,有时还会爆出web程序的绝对路径。
(5) 135端口的渗透剖析
135端口主要用于使用RPC协议并提供DCOM服务,通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码;使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。同时这个端口也爆出过不少漏洞,最严重的就是缓冲区溢出漏洞,曾经疯狂一时的‘冲击波’病毒就是利用这个漏洞进行传播的。对于135端口的渗透,黑客的渗透方法为:
- 查找存在RPC溢出的主机,进行远程溢出攻击,直接获得系统权限。如用‘DSScan’扫描存在此漏洞的主机。对存在漏洞的主机可使用‘ms05011.exe’进行溢出,溢出成功后获得系统权限。
- 扫描存在弱口令的135主机,利用RPC远程过程调用开启telnet服务并登录telnet执行系统命令。系统弱口令的扫描一般使用X-SCAN和SHCAN。对于telnet服务的开启可使用工具Recton。
(6) 139/445端口渗透剖析
139端口是为‘NetBIOS SessionService’提供的,主要用于提供windows文件和打印机共享以及UNIX中的Samba服务。445端口也用于提供windows文件和打印机共享,在内网环境中使用的很广泛。这两个端口同样属于重点攻击对象,139/445端口曾出现过许多严重级别的漏洞。
下面剖析渗透此类端口的基本思路。
- 对于开放139/445端口的主机,一般尝试利用溢出漏洞对远程主机进行溢出攻击,成功后直接获得系统权限。
- 对于攻击只开放445端口的主机,黑客一般使用工具‘MS06040’或‘MS08067’.可使用专用的445端口扫描器进行扫描。NS08067溢出工具对windows2003系统的溢出十分有效,工具基本使用参数在cmd下会有提示。
- 对于开放139/445端口的主机,黑客一般使用IPC$进行渗透。在没有使用特点的账户和密码进行空连接时,权限是最小的。获得系统特定账户和密码成为提升权限的关键了,比如获得administrator账户的口令。
- 对于开放139/445端口的主机,可利用共享获取敏感信息,这也是内网渗透中收集信息的基本途径。
(7) 1433端口渗透剖析
1433是SQLServer默认的端口,SQL Server服务使用两个端口:tcp-1433、UDP-1434.其中1433用于供SQLServer对外提供服务,1434用于向请求者返回SQLServer使用了哪些TCP/IP端口。1433端口通常遭到黑客的攻击,而且攻击的方式层出不穷。最严重的莫过于远程溢出漏洞了,如由于SQL注射攻击的兴起,各类数据库时刻面临着安全威胁。利用SQL注射技术对数据库进行渗透是目前比较流行的攻击方式,此类技术属于脚本渗透技术。
- 对于开放1433端口的SQL Server2000的数据库服务器,黑客尝试使用远程溢出漏洞对主机进行溢出测试,成功后直接获得系统权限。
- 暴力破解技术是一项经典的技术。一般破解的对象都是SA用户。通过字典破解的方式很快破解出SA的密码。
- 嗅探技术同样能嗅探到SQL Server的登录密码。
- 由于脚本程序编写的不严密,例如,程序员对参数过滤不严等,这都会造成严重的注射漏洞。通过SQL注射可间接性的对数据库服务器进行渗透,通过调用一些存储过程执行系统命令。可以使用SQL综合利用工具完成。
(8) 1521端口渗透剖析
1521是大型数据库Oracle的默认监听端口,估计新手还对此端口比较陌生,平时大家接触的比较多的是Access,MSSQL以及MYSQL这三种数据库。一般大型站点才会部署这种比较昂贵的数据库系统。对于渗透这种比较复杂的数据库系统,黑客的思路如下:
- Oracle拥有非常多的默认用户名和密码,为了获得数据库系统的访问权限,破解数据库系统用户以及密码是黑客必须攻破的一道安全防线。
- SQL注射同样对Oracle十分有效,通过注射可获得数据库的敏感信息,包括管理员密码等。
- 在注入点直接创建java,执行系统命令。
(9) 3306端口渗透剖析
3306是MYSQL数据库默认的监听端口,通常部署在中型web系统中。在国内LAMP的配置是非常流行的,对于php+mysql构架的攻击也是属于比较热门的话题。mysql数据库允许用户使用自定义函数功能,这使得黑客可编写恶意的自定义函数对服务器进行渗透,最后取得服务器最高权限。对于3306端口的渗透,黑客的方法如下:
- 由于管理者安全意识淡薄,通常管理密码设置过于简单,甚至为空口令。使用破解软件很容易破解此类密码,利用破解的密码登录远程mysql数据库,上传构造的恶意UDF自定义函数代码进行注册,通过调用注册的恶意函数执行系统命令。或者向web目录导出恶意的脚本程序,以控制整个web系统。
- 功能强大的‘cain’同样支持对3306端口的嗅探,同时嗅探也是渗透思路的一种。
- SQL注入同样对mysql数据库威胁巨大,不仅可以获取数据库的敏感信息,还可使用load_file()函数读取系统的敏感配置文件或者从web数据库链接文件中获得root口令等,导出恶意代码到指定路径等。
(10) 3389端口渗透剖析
3389是windows远程桌面服务默认监听的端口,管理员通过远程桌面对服务器进行维护,这给管理工作带来的极大的方便。通常此端口也是黑客们较为感兴趣的端口之一,利用它可对远程服务器进行控制,而且不需要另外安装额外的软件,实现方法比较简单。当然这也是系统合法的服务,通常是不会被杀毒软件所查杀的。使用‘输入法漏洞’进行渗透。
- 对于windows2000的旧系统版本,使用‘输入法漏洞’进行渗透。
- 针对windows2000终端服务的一个密码破解程序,这个程序被微软公司推荐给用户使用,来检查终端服务密码的强壮性。程序使用msrdp空间,可在本地虚拟远程终端连接窗口,通过密码字典进行破解。可以指定多种参数,使用比较灵活,破解速度视攻击主机与被攻击主机网络带宽来定。稍等下,虚拟机有点卡。我们先看第三种方法吧。
- cain是一款超级的渗透工具,同样支持对3389端口的嗅探。
- 映像劫持与shift粘贴键的配合使用。通常安全人员配置服务器安全时,都会考虑使用功能强大的组策略。比如阻止非法攻击者执行cmd命令和拒绝非授权远程登录用户等(关于组策略的详细设置方法我们已经在信息系统安全工程师课程做了详细的讲解),即使你拥有管理员权限同样不能进行登录。黑客突破组策略的秘籍就在3389登录框这里,也就是映像劫持与shift粘贴键的配合使用,调出任务管理器然后在任务管理器中打开组策略编辑器,这里可根据实际情侣进行修改了。
- 社会工程学通常是最可怕的攻击技术,如果管理者的一切习惯和规律被黑客摸透的话,那么他管理的网络系统会因为他的弱点被渗透。
(11) 4899端口渗透剖析
4899端口是remoteadministrator远程控制软件默认监听的端口,也就是平时常说的radmini影子。radmini目前支持TCP/IP协议,应用十分广泛,在很多服务器上都会看到该款软件的影子。对于此软件的渗透,思路如下:
- radmini同样存在不少弱口令的主机,通过专用扫描器可探测到此类存在漏洞的主机。
- radmini远控的连接密码和端口都是写入到注册表系统中的,通过使用webshell注册表读取功能可读取radmini在注册表的各项键值内容,从而破解加密的密码散列。
(12) 5631端口渗透剖析
5631端口是著名远程控制软件symantecpcanywhere的默认监听端口,同时也是世界领先的远程控制软件。利用此软件,用户可以有效管理计算机并快速解决技术支持问题。由于软件的设计缺陷,使得黑客可随意下载保存连接密码的*.cif文件,通过专用破解软件进行破解。这些操作都必须在拥有一定权限下才可完成,至少通过脚本渗透获得一个webshell。通常这些操作在黑客界被称为pcanywhere提权技术。
(13) 5900端口渗透剖析
5900端口是优秀远程控制软件VNC的默认监听端口,此软件由著名的AT&T的欧洲研究实验室开发的。VNC是在基于unix和linux操作系统的免费的开放源码软件,远程控制能力强大,高效实用,其性能可以和windows和MAC中的任何一款控制软件媲美。对于该端口的渗透,思路如下:
- VNC软件存在密码验证绕过漏洞,此高危漏洞可以使得恶意攻击者不需要密码就可以登录到一个远程系统。
- cain同样支持对VNC的嗅探,同时支持端口修改。
- VNC的配置信息同样被写入注册表系统中,其中包括连接的密码和端口。利用webshell的注册表读取功能进行读取加密算法,然后破解。
(14) 8080端口渗透剖析
8080端口通常是apache_Tomcat服务器默认监听端口,apache是世界使用排名第一的web服务器。国内很多大型系统都是使用apache服务器,对于这种大型服务器的渗透,主要有以下方法:
- apache tomcatUTF-8目录遍历漏洞,tomcat处理请求中的编码时存在漏洞,如果在context.xml或server.xml中将allowlinking设置为true,且连接器配置为URIEncoding=UTF-8,若黑客向apache提交恶意请求就可以通过目录遍历攻击读取服务器上的任意文件,包括/etc/passwd等
- apache后台弱口令漏洞,黑客可使用专用扫描器探测此类漏洞。
- JSP爆源码漏洞,对于一些旧版本的tomcat,黑客通过提交一些注入.jsP.Jsp等,尝试找源码代码和目录文件。查找上传文件,直接上传他们的JSP脚本后门。
- apache在windows环境下是以系统权限启动的,JSP的脚本同样继承了该权限,可直接执行任意系统命令。
3. 最后我们如何保护好自己的端口
电脑开放了过多端口,担心其中就有后门程序的端口,担心被渗透怎么办? 那么只要做好下面几点就行了:
- 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口;
- 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料,看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断;
- 限制:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口;
限制端口的方法如下:
对于采用windows的用户来说,不需要安装任何其他软件,可以利用"修改组策略"或"TCP/IP筛选功能"限制服务器的端口。
具体设置如下:
(1) 第一种方法——“修改组策略”:
- 第一步,在“运行”输入gpedit.msc,回车打开“组策略”,在组策略中的windows设置-安全设置中选中“IP 安全策略,在本地计算机”,在右边窗格的空白位置右击鼠标,弹出快捷菜单,选择“创建 IP 安全策略”,于是弹出一个向导。在向导中点击“下一步”按钮,为新的安全策略命名;再按“下一步”,则显示“安全通信请求”画面,在画面上把“激活默认相应规则”左边的钩去掉,点击“完成”按钮就创建了一个新的IP 安全策略。
- 第二步,右击该IP安全策略,在“属性”对话框中,把“使用添加向导”左边的钩去掉,然后单击“添加”按钮添加新的规则,随后弹出“新规则属性”对话框,在画面上点击“添加”按钮,弹出IP筛选器列表窗口;在列表中,首先把“使用添加向导”左边的钩去掉,然后再点击右边的“添加”按钮添加新的筛选器。
- 第三步,进入“筛选器属性”对话框,首先看到的是寻址,源地址选“任何 IP 地址”,目标地址选“我的 IP 地址”;点击“协议”选项卡,在“选择协议类型”的下拉列表中选择“TCP”,然后在“到此端口”下的文本框中输入“135”,点击“确定”按钮,这样就添加了一个屏蔽 TCP 135(RPC)端口的筛选器,它可以防止外界通过135端口连上你的电脑。点击“确定”后回到筛选器列表的对话框,可以看到已经添加了一条策略,重复以上步骤继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口,为它们建立相应的筛选器。重复以上步骤添加TCP 1025、2745、3127、6129、3389 端口的屏蔽策略,建立好上述端口的筛选器,最后点击“确定”按钮。
- 第四步,在“新规则属性”对话框中,选择“新 IP 筛选器列表”,然后点击其左边的圆圈上加一个点,表示已经激活,最后点击“筛选器操作”选项卡。在“筛选器操作”选项卡中,把“使用添加向导”左边的钩去掉,点击“添加”按钮,添加“阻止”操作:在“新筛选器操作属性”的“安全措施”选项卡中,选择“阻止”,然后点击“确定”按钮。
- 第五步,进入“新规则属性”对话框,点击“新筛选器操作”,其左边的圆圈会加了一个点,表示已经激活,点击“关闭”按钮,关闭对话框;最后回到“新IP安全策略属性”对话框,在“新的IP筛选器列表”左边打钩,按“确定”按钮关闭对话框。在“本地安全策略”窗口,用鼠标右击新添加的 IP 安全策略,然后选择“指派”。
于是重新启动后,电脑中上述网络端口就被关闭了,病毒和黑客再也不能连上这些端口,从而保护了你的电脑。
(2) 第二种方法——"TCP/IP筛选功能":
- 右键点击“网上邻居”,选择“属性”,然后双击“本地连接”(如果是拨号上网用户,选择“我的连接”图标),弹出“本地连接状态”对话框。
- 点击[属性]按钮,弹出“本地连接属性”,选择“此连接使用下列项目”中的“Internet协议(TCP/IP)”,然后点击[属性]按钮。
- 在弹出的“Internet协议(TCP/IP)”对话框中点击[高级]按钮。在弹出的“高级TCP/IP设置”中,选择“选项”标签,选中“TCP/IP筛选”,然后点击[属性]按钮。
- 在弹出的“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框,然后把左边“TCP端口”上的“只允许”选上。
这样,您就可以来自己添加或删除您的TCP或UDP或IP的各种端口了。
添加或者删除完毕,重新启动机器以后,您的服务器就被保护起来了。