黑客工具技术:15个用于扫描远程主机的Nmap命令

Nmap是信息安全领域最受欢迎的网络映射器之一。它被网络安全专业人员和新手用于审计和发现本地和远程开放端口,以及主机和网络信息。

该工具的一些最佳功能是它是开源的,免费的,多平台的,并且每年都会不断更新。它还有一个很大的优点:它是最完整的主机和网络扫描仪之一。它包含大量选项以增强您的扫描和绘图任务,并带来了一个令人难以置信的社区和全面的文档,以帮助您从一开始就理解这个工具。Nmap可用于:

  • 创建完整的计算机网络地图。
  • 查找任何主机的远程IP地址。
  • 获取操作系统和软件详细信息。
  • 检测本地和远程系统上的开放端口。
  • 审核服务器安全标准。
  • 查找远程和本地主机上的漏洞。

今天我们将通过一些实用的基于终端的Nmap命令来探索这个基本的安全工具。

最好的15个Nmap命令示例

让我们了解一些可以使用Nmap执行的基于命令行的有用扫描。

1.针对IP或主机的基本Nmap扫描

nmap 1.1.1.1

现在,如果要扫描主机名,只需替换主机的IP,如下所示:

nmap cloudflare.com

从Nmap开始,这些基本扫描非常适合您的第一步。

2.扫描特定端口或扫描本地或远程服务器上的整个端口范围

nmap -p 1-65535 localhost

在此示例中,我们扫描了localhost计算机的所有65535端口。

Nmap能够扫描所有可能的端口,但您也可以扫描特定端口,这将报告更快的结果。见下文:

nmap -p 80,443 8.8.8.8

3.扫描多个IP地址

我们尝试扫描多个IP地址。为此,您需要使用以下语法:

nmap 1.1.1.1 8.8.8.8

您还可以扫描连续的IP地址:

nmap -p 1.1.1.1,2,3,4

这将扫描1.1.1.11.1.1.21.1.1.31.1.1.4

4.扫描IP范围

您还可以使用Nmap扫描整个CIDR IP范围,例如:

nmap -p 8.8.8.0/28

这将扫描14个连续的IP范围,从8.8.8.18.8.8.14

另一种方法是简单地使用这种范围:

nmap 8.8.8.1-14

您甚至可以使用通配符扫描整个C类IP范围,例如:

nmap 8.8.8.*

这将扫描从256个IP地址8.8.8.18.8.8.256

如果您需要从IP范围扫描中排除某些IP,可以使用“-exclude”选项,如下所示:

nmap -p 8.8.8.* --exclude 8.8.8.1

使用“-top-ports”参数和特定数字可以扫描该主机的前X个最常见端口,我们可以看到:

nmap --top-ports 20 192.168.1.106

将“20”替换为所需的数字。输出示例:

[root@securitytrails:~]nmap --top-ports 20 localhost  
Starting Nmap 6.40 ( http://nmap.org ) at 2018-10-01 10:02 EDT  
Nmap scan report for localhost (127.0.0.1)  
Host is up (0.000016s latency).  
Other addresses for localhost (not scanned): 127.0.0.1  
PORT     STATE    SERVICE  
21/tcp   closed   ftp  
22/tcp   closed   ssh  
23/tcp   closed   telnet  
25/tcp   closed   smtp  
53/tcp   closed   domain  
80/tcp   filtered http  
110/tcp  closed   pop3  
111/tcp  closed   rpcbind  
135/tcp  closed   msrpc  
139/tcp  closed   netbios-ssn  
143/tcp  closed   imap  
443/tcp  filtered https  
445/tcp  closed   microsoft-ds  
993/tcp  closed   imaps  
995/tcp  closed   pop3s  
1723/tcp closed   pptp  
3306/tcp closed   mysql  
3389/tcp closed   ms-wbt-server  
5900/tcp closed   vnc  
8080/tcp closed   http-proxy  

6.扫描从文本文件读取的主机和IP地址

在这种情况下,Nmap对于读取包含主机和IP的文件也很有用。

假设您创建了一个包含以下这些行的list.txt文件:

192.168.1.106  
cloudflare.com  
microsoft.com  
securitytrails.com

“-iL”参数允许您从该文件中读取,并为您扫描所有这些主机:

nmap -iL list.txt

7.将Nmap扫描结果保存到文件中

另一方面,在以下示例中,我们不会读取文件,而是将结果导出/保存到文本文件中:

nmap -oN output.txt securitytrails.com

Nmap也能够将文件导出为XML格式,请参阅下一个示例:

nmap -oX output.xml securitytrails.com

8.禁用DNS名称解析

如果您需要稍微加快扫描速度,可以随时选择禁用所有扫描的反向DNS解析。只需添加“-n”参数即可。

[root@securitytrails:~]nmap -p 80 -n 8.8.8.8  
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-01 09:15 -03  
Nmap scan report for 8.8.8.8  
Host is up (0.014s latency).  
PORT   STATE    SERVICE  
80/tcp filtered http  

查看正常DNS解析启用扫描的差异:

[root@securitytrails:~]nmap -p 80 8.8.8.8  
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-01 09:15 -03  
Nmap scan report for google-public-dns-a.google.com (8.8.8.8)  
Host is up (0.014s latency).  
PORT   STATE    SERVICE  
80/tcp filtered http  

9.快速执行扫描+操作系统和服务检测

使用“-A”参数可以执行操作系统和服务检测,同时我们将其与“-T4”相结合,以加快执行速度。请参阅以下示例:

nmap -A -T4 cloudflare.com

这是我们为此测试获得的输出:

用于操作系统和服务检测的nmap scan命令示例

10.检测服务/守护程序版本

这可以通过使用-sV参数来完成

nmap -sV localhost

正如你在这里看到的:

[root@securitytrails:~]nmap -sV localhost  
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-01 09:28 -03  
Nmap scan report for localhost (127.0.0.1)  
Host is up (0.000020s latency).  
Other addresses for localhost (not scanned): ::1  
Not shown: 997 closed ports  
PORT STATE SERVICE VERSION  
111/tcp open rpcbind 2-4 (RPC #100000)  
631/tcp open ipp CUPS 2.2  
902/tcp open ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC, SOAP)  

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .  
Nmap done: 1 IP address (1 host up) scanned in 7.96 seconds

11.使用TCP或UDP协议进行扫描

我们最喜欢Nmap的一个原因是它适用于TCP和UDP协议。虽然大多数服务都在TCP上运行,但您也可以通过扫描基于UDP的服务获得巨大优势。我们来看一些例子。

标准TCP扫描输出:

[root@securitytrails:~]nmap -sT 192.168.1.1  
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-01 09:33 -03  
Nmap scan report for 192.168.1.1  
Host is up (0.58s latency).  
Not shown: 995 closed ports  
PORT STATE SERVICE  
80/tcp open http  
1900/tcp open upnp  
20005/tcp open btx  
49152/tcp open unknown  
49153/tcp open unknown  
Nmap done: 1 IP address (1 host up) scanned in 1.43 seconds

使用“-sU”参数进行UDP扫描结果:

[root@securitytrails:~]nmap -sU localhost  
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-01 09:37 -03  
Nmap scan report for localhost (127.0.0.1)  
Host is up (0.000021s latency).  
Other addresses for localhost (not scanned): ::1  
Not shown: 997 closed ports  
PORT STATE SERVICE  
68/udp open|filtered dhcpc  
111/udp open rpcbind  
5353/udp open|filtered zeroconf

12.使用Nmap进行漏洞检测

Nmap的最大特点之一是并非所有网络和系统管理员都知道的是“Nmap脚本引擎”(称为NSE)。此脚本引擎允许用户使用预定义的脚本集,或使用Lua编程语言编写自己的脚本。

使用NSE对于自动化系统和漏洞扫描至关重要。例如,如果要对目标运行完整漏洞测试,可以使用以下参数:

nmap -Pn --script vuln 192.168.1.105

输出示例:

[root@securitytrails:~]nmap -Pn --script vuln 192.168.1.105  
Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-01 09:46 -03  
Pre-scan script results:  
| broadcast-avahi-dos:  
| Discovered hosts:  
| 224.0.0.251  
| After NULL UDP avahi packet DoS (CVE-2011-1002).  
|_ Hosts are all up (not vulnerable).  
Nmap scan report for 192.168.1.105  
Host is up (0.00032s latency).  
Not shown: 995 closed ports  
PORT STATE SERVICE  
80/tcp open http  
|_http-csrf: Couldn't find any CSRF vulnerabilities.  
|_http-dombased-xss: Couldn't find any DOM based XSS.  
| http-slowloris-check:  
| VULNERABLE:  
| Slowloris DOS attack  
| State: LIKELY VULNERABLE  
| IDs: CVE:CVE-2007-6750  
| Slowloris tries to keep many connections to the target web server open and hold  
| them open as long as possible. It accomplishes this by opening connections to  
| the target web server and sending a partial request. By doing so, it starves  
| the http server's resources causing Denial Of Service.  
|  
| Disclosure date: 2009-09-17  
| References:  
| http://ha.ckers.org/slowloris/  
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750  
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.  
|_http-vuln-cve2014-3704: ERROR: Script execution failed (use -d to debug)  
1900/tcp open upnp  
20005/tcp open btx  
49152/tcp open unknown  
49153/tcp open unknown

如您所见,在此漏洞测试中,我们能够检测到一个CVE(Slowloris DOS攻击)。

13.使用Nmap启动DOS

Nmap功能似乎永远不会结束,并且由于NSE,它甚至允许我们对我们的网络测试发起DOS攻击。

在我们之前的示例(#12)中,我们发现主机容易受到Slowloris攻击,现在我们将尝试通过在永久循环中启动DOS攻击来利用该漏洞:

nmap 192.168.1.105 -max-parallelism 800 -Pn --script http-slowloris --script-args http-slowloris.runforever=true

14.发动蛮力攻击

NSE非常吸引人 – 它包含了您可以想象的所有内容的脚本。请参阅下面三个针对WordPress,MSSQL和FTP服务器的BFA示例:

WordPress暴力攻击:

nmap -sV --script http-wordpress-brute --script-args 'userdb=users.txt,passdb=passwds.txt,http-wordpress-brute.hostname=domain.com, http-wordpress-brute.threads=3,brute.firstonly=true' 192.168.1.105

对MS-SQL的暴力攻击:

nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt 192.168.1.105

FTP暴力攻击:

nmap --script ftp-brute -p 21 192.168.1.105

15.检测远程主机上的恶意软件感染

Nmap能够通过对一些流行的OS服务(如Identd,Proftpd,Vsftpd,IRC,SMB和SMTP)进行大量测试来检测恶意软件和后门。它还有一个模块,用于检查远程服务器中的流行恶意软件标志,并集成了Google的安全浏览和VirusTotal数据库。

可以使用以下命令执行常见的恶意软件扫描:

nmap -sV --script=http-malware-host 192.168.1.105

或使用Google的恶意软件检查:

nmap -p80 --script http-google-malware infectedsite.com

输出示例:

80/tcp open  http  
|_http-google-malware.nse: Host is known for distributing malware.

Nmap是当今信息安全专业人士使用的最完整,最准确的端口扫描程序之一。有了它,您可以执行简单的端口扫描任务或使用其强大的脚本引擎来启动DOS攻击,检测远程和本地服务器上的恶意软件或暴力测试。

今天我们讨论了前十五个Nmap命令来扫描远程主机,但是如果你开始在OSINT策略中使用Nmap,还有很多要发现的内容。