上篇文章中, 我们针对 "网络通信原理" 做了详细描述, 在通信原理里也提到了端口这个概念, 但是没有详细讲解, 今天我详细讲解一下 "网络协议端口", 因为这个 "东东" 也是黑客们常常利用渗透入侵的手段.
一, 先讲一讲几种不同的 "端口" 的定义
计算机 "端口" 是英文 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 木马
- = WebAdmin
- = 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 木马
- = pcAnywhere
- = pcAnywhere
5742 = WinCrash 木马
5800 = VNC 端口
5801 = VNC 端口
5890 = VNC 端口
5891 = VNC 端口
5892 = VNC 端口
6267 = 广外女生
6400 = The Thing 木马
- = IRC
- = IRC SERVER PORT
6667 = 小邮差
- = IRC
- = 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 的各种端口了.
添加或者删除完毕, 重新启动机器以后, 您的服务器就被保护起来了.
来源: http://network.51cto.com/art/201811/587977.htm