Bootstrap

网络信息收集之各种端口工具的扫描

端口扫描

在收集到网络地址后,对网络中所有主机进行存活扫描与端口扫描,以此来发现内网中的服务或者可能存在的漏洞。

(1)nmap

安装好nmap软件,直接按下一步的话,会在本地的C:\Program Files (x86)下生成nmap目录,然后打开cmd,进入该目录,使用nmap -sP ip地址/子网掩码,即可对该ip网段进行扫描,主要是扫描内网ip。直接使用nmap+ip地址是对该ip地址的端口扫描,而加上-sY -p 1-6000是指对1-6000这个端口范围进行扫描,-sT是对tcp进行扫描,p针对端口。

(2)S扫描器

S.exe扫描使用的时cmd命令,S TCP 10.1.1.1 10.1.1.254 135 445时对这个ip范围内的135和445两个端口进行扫描,S TCP 10.1.1.1 10.1.1.254 1-500 500对10.1.1.1-254这个ip范围内的1-500端口范围内进行以500线程速度扫描。S TCP 10.1.1.1 1-6000 /Save,扫描10.1.1.1这IP中的1到6000端口,将结果写入Result.txt。S TCP 10.1.1.1 10.1.1.255 135 /Save,扫描10.1.1.1到10.1.1.255这IP段中的135端口,将结果写入Result.txt。

(3)proxychains代理扫描

使用kali的proxychains对这个端口进行扫描,将tunnel.aspx放到win8的web目录下,然后在kali远程打开它,打开终端进入reGeorg目录下,使用命令python reGeorgSocksProxy.py -u http://目标机的ip/tunnel.aspx对它挂代理,然后将proxychains.conf文件修改代理端口,然后挂代理使用nmap对10.1.1.1进行扫描,但是该扫描由于是socks5代理只支持tcp/udp,所以要针对性的扫描,不能使用-sp参数。

(4)nc扫描

nc进行扫描,使用命令nc -nvv -w2 -z 10.1.1.1 1-6000,不过速度太慢,一个一个端口扫的。

(5)御剑无字典大小限制版

御剑扫描端口呢,大范围扫描的时候,其中有内网ip的端口会忽略的跳过了,而且端口开放需要自己输入,不过时间够快。

(6)查找终端工具

终端检测工具,扫描时大范围扫描的,而且确确实实知道ip地址,扫描的端口过于大,速度非常慢

(7)ScanPort

工具简单易用,但是扫描端口容易不全,而且还是只能扫出开放端口。

(8)portscanruanjian

工具是有点简单,不过扫描端口只能扫出开放端口,扫不出监听端口。

(9)自写脚本

php,python,perl,ruby,java,c等程序都可以用来做端口扫描,同时还可以使用bat或者shell脚本来做扫描。
python
#!/usr/bin/env python
import socket
def get_ip_status(ip,port):
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
server.connect((ip,port))
print(’{0} port {1} is open’.format(ip, port))
except Exception as err:
print(’{0} port {1} is not open’.format(ip,port))
finally:
server.close()
if name == ‘main’:
host = ‘10.0.0.11’
for port in range(20,100):
get_ip_status(host,port)
php
a r r = [ 80 , 8080 , 3306 ] ; f o r e a c h ( arr = [80,8080,3306]; foreach ( arr=[80,8080,3306];foreach(arr as $port) {
f p = @ f s o c k o p e n ( ′ 172.29.159.19 8 ′ , fp = @fsockopen('172.29.159.198', fp=@fsockopen(172.29.159.198,port, e r r n o , errno, errno,errstr,0.1);
if (!$fp) {
echo $port." closed\n";
}else{
echo $port." Opend\n";
}
}
ruby

  1. require ‘socket’ #socket library
  2. def open_port(host, port)
  3. sock = Socket.new(:INET, :STREAM)
  4. raw = Socket.sockaddr_in(port, host)
  5. puts “#{port} open.” if sock.connect(raw)
  6. rescue (Errno::ECONNREFUSED)
  7. rescue(Errno::ETIMEDOUT)
  8. end
  9. def main(host, start_port, end_port)
  10. until start_port == end_port do
  11. open_port(host, start_port)    
    
  12. start_port += 1    
    
  13. end
  14. end
  15. main ARGV[0], ARGV[1].to_i, ARGV[2].to_i
    ruby scanner.rb localhost 1 100
;