我觉得咱程序员多多少少得了解一下安全方面的知识,当然小伙伴们别想歪了。了解信息安全知识不管是在日常吹牛emmm还是开发工作中都能起到一定作用。
端口扫描俗称网络探针,是黑客经常使用的一种技术,它一般是网络攻击的前期阶段,用于探测目标开启了哪些服务(常见的http服务,mysql服务,redis服务。。。),以便发起针对该服务的攻击。以TCP/IP协议族构建的互联网总是离不开端口这个概念。我们常见的端口有:
· 21:FTP文件传输(当然已经很古老啦)
· 25:SMTP邮件服务
· 53:DNS域名系统服务
· 80:HTTP超文本传输协议服务(最常见)
· 443:HTTPS
· 3306:MYSQL数据库服务
· 1521:ORACLE
· 。。。。。
端口扫描的原理,对于UDP的服务,发送对应服务的请求包,查看是否有相应;对于TCP,三次握手发送TCP SYN数据包,查看响应。下面给大家介绍一个namp命令工具。
1.扫描常见的100个端口
nmap -F 192.168.126.139
2.指定扫描某个端口
nmap -p 8080 192.168.126.139 //-p后加指定的端口号
3.使用名字来指定扫描端口
nmap -p dns,http 192.168.126.139 //-p后跟端口名称,多个端口用逗号隔开
4.使用协议指定扫描端口
nmap -p U:53 , T:22 192.168.126.139 //对UDP的53端口和TCP的22端口进行扫描
5.扫描所有端口
nmap -p * 192.168.126.139 //慎用
6.扫描常用端口
nmap --top-ports 20 192.168.126.139 //对前20个端口进行扫描,数字根据自己需求设置,默认是10个
tcp劫持是一门古老的技术,现在已经很少被人们使用了,不过早在1995年凯文*米特尼克世界头号黑客使用TCP劫持侵入Tsutomu Shimomura的工作站并且TCP劫持技术细节被公布后,它很快成为黑客手中的重要手段。
Transmission Control Protocol(TCP) 是TCP/IP分层协议模型中传输层的基本协议之一。TCP协议使得数据包传输的纠错成为可能。它建立了从一台主机到另一台主机的逻辑连接-一种我们可以认为是不会发生错误的虚拟连接。TCP协议的低层算法控制数据包队列和损坏数据包的重发。TCP按数据包的Sequence Number域来处理它接收到所有数据包,并且将它们排序。所有这些对于虚拟连接都是透明的,并且将会随连接会话的结束而消失。TCP协议是TCP/IP协议族中唯一提供额外数据包和连接认证识别机制的协议。而这恰好解释了为什么应用层的诸多协议,如SMTP,FTP和TELNET都使用TCP协议来访问远程主机。
就TCP数据包的识别而言,TCP包头由两个32位数组成,它们都被用作计数器,分别是Sequence Number和Acknowledgment Number。另外还有个6位长的控制字段(也叫命令字段),可以是以下值:
URG: Urgent pointer field significant
ACK: Acknowledgment field significant
PSH: Push function
RST: Reset the connection
SYN: Synchronize Sequence Numbers
FIN: No more data from sender
1.同网络(一个交换机下)比较容易,TCP连接双方的唯一识别信息就是Sequence Number 和Acknowledgment Number 两个32位数,所以利用嗅探技术捕获网络通信数据。入侵者从任意一台联网的主机,构造目标地址为特定TCP连接其中一方,源地址为另一方的TCP数据包,并且识别信息能对上(不明白的建议学习下三次握手过程),这样原来的TCP连接(正常客户主机和受害主机的链接)会由于计数器不匹配而断开连接。
2.不同网段又如何,只能猜测初始的序列数值(Initial Sequence Number,ISN),这么猜测呢,得需要样本,通常,入侵者把操作系统当作黑盒,并实现请求-应答测试,分析ISN值,进而缩小可能值范围确定生成函数,而后攻击者则开始侦听服务器系统,并且等待从客户机发来的连接请求。当连接建立后,攻击者计算在连接建立时使用的可能的ISN值。