【信息收集】服务端口收集

一、服务端口介绍

在渗透测试中对服务端口的收集非常重要,通过扫描服务开放的端口可判断对应开启的服务,通过所提供的这些服务的已知漏洞就可进行攻击。知名端口(0-1023)固定分配给某些服务的,动态端口(1023-65535)不固定分配给某些服务。

常见端口:

21:ftp文件传输协议(匿名访问、弱密码等

22:ssh专门为远程登录会话和其他网络服务提供的安全性协议,基本出现在liunx服务器、网络设备上(弱口令、防火墙ssh后门等

23:telnet远程管理服务(弱口令探测、溢出等

25:smtp邮件接收服务(溢出

53:dns提供域名解析(dns域传送信息泄露、dns劫持、dns缓存投毒、dns欺骗、dns隧道技术刺穿防火墙等等

80:http协议(sql注入、文件上传、文件包含、xss、xxe、csrf、ssrf等等

110:pop3邮件发送服务器(溢出

443:https服务的web浏览端口、能提供加密和通过安全端口传输的另一种http(心脏出血

445:smb用在计算机间共享文件、打印机、串口等(永恒之蓝漏洞

1433:oracle

3306:mysql数据库(弱口令

3389:远程桌面

5432:postgresql

6379:redis

8080:连接代理

二、服务端口收集方法

1.nmap工具

tcp connect()扫描

通过试图与目标主机相应的tcp端口建立一个完整的tcp连接,判断目标主机端口的开放信息

指令:nmap -sT 域名/ip地址(-sT可省略)

【信息收集】服务端口收集_第1张图片

半开放扫描

tcp syn:只发送一个syn报文然后等待回应,比tcp connect扫描更加安全,不建立一个完整的tcp连接,目标主机一般不会将此类型行为记入安全日志,但需要root权限

指令:namp -sS 域名/ip地址

【信息收集】服务端口收集_第2张图片

udp端口扫描

使用udp扫描方式确定目标主机的udp端口开放情况,也需要root权限

指令:nmap -sU www.xxx.com

扫描显示所有的udp端口是open|filterd

【信息收集】服务端口收集_第3张图片

2.masscan工具

指令:masscan ip地址 -p 端口(1-10000)

【信息收集】服务端口收集_第4张图片

3.御剑高速tcp端口扫描工具

【信息收集】服务端口收集_第5张图片

4.自己造工具

指令:xxx.py -u ip地址

import threading
from socket import *
import getopt
import sys
lock = threading.Lock()  # 确保 多个线程在共享资源的时候不会出现脏数据
openNum = 0  # 端口开放数量统计
threads = []  # 线程池
def start():
    if len(sys.argv)==3:
        opts,args=getopt.getopt(sys.argv[1:],"u:t:d:")
        for k,v in opts:
            if k=='-u':
                target=v
            main(target)
    else:
        print("Error Argument!")
        sys.exit()
def portscanner(host, port):
    global openNum
    try:
        s = socket(AF_INET, SOCK_STREAM)
        s.connect((host, port))
        lock.acquire()
        openNum += 1
        print(f"{port} open")
        lock.release()
        s.close()
    except:
        pass


def main(ip, ports=range(65535)):  # 设置 端口缺省值0-65535
    setdefaulttimeout(1)
    print("---portscan v1.0---by:Edward Hopper---- ")
    for port in ports:
        # target定义一个要执行的函数scan,args为要向函数里面传递的参数
        t = threading.Thread(target=portscanner, args=(ip, port))
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
    print(f"扫描完成--->>> ,共开放 {openNum}端口")
if __name__ == '__main__':
    start() # 全端口扫描

【信息收集】服务端口收集_第6张图片

你可能感兴趣的:(信息收集,网络,运维,安全,web安全)