可爱熊个人博客

Archive for 二月, 2018

使用 Nmap 扫描和识别服务

Nmap 可能是世界上最广泛使用的端口扫描器。他可以用于识别活动主机、扫描 TCP 和 UDP 开放端口,检测防火墙,获得运行在远程主机上的服务版本,甚至是,可以使用脚本来发现和利用漏洞。

这个秘籍中,我们会使用 Nmap 来识别运行在目标应用上的所有服务。出于教学目的,我们会多次调用 Nmap 来实现它,但是这可以通过单个命令来完成。

准备

我们只需要将 vulnerable_vm 运行起来。

操作步骤

  1. 首先,我们打算看看服务器是否响应 ping,或者服务器是否打开:
    nmap -sn 192.168.56.102
    

  2. 现在我们直到它打开了让我们看看打开了哪些端口:
    nmap 192.168.56.102
    

  3. 现在,我们要让 Nmap 向服务器询问正在运行的服务的版本,并且基于它猜测操作系统。
    nmap -sV -O 192.168.56.10
    
  4. 我们可以看到,我们的 vulnerable_vm 使用 Linux 2.6 内核,并带有 Apache 2.2.14 Web 服务器,PHP 5.3.2,以及其它。

工作原理

Nmap 是个端口扫描器,这意味着它可以向一些指定 IP 的 TCP 或 UDP 端口发送封包,并检查是否有响应。如果有的话,这意味着端口是打开的,因此,端口上运行着服务。

在第一个名中,使用-sn参数,我们让 Nmap 只检查是否服务器响应 ICMP 请求(或 ping)。我们的服务器响应了,所以它是活动的。

第二个命令是调用 Nmap 的最简方式,它只指定目标 IP。所做的事情是先 ping 服务器,如果它响应了,Nmap 会向 1000 个 TCP 端口列表发送探针,来观察哪个端口响应,之后报告响应端口的结果。

第三个命令向第二个添加了如下两个任务:

  • -sV请求每个被发现的开放端口的标识(头部或者自我识别),这是它用作版本的东西。
  • -O告诉 Nmap,尝试猜测运行在目标上的操作系统。使用开放端口和版本收集的信息。

更多

有一些其它的实用参数:

  • -sT:通常,在 root 用户下运行 Nmap 时,它使用 SYN 扫描类型。使用这个参数,我们就强制让扫描器执行完全连接的扫描。它更慢,并且会在服务器的日志中留下记录,但是它不太可能被入侵检测系统检测到。
  • -Pn:如果我们已经知道了主机是活动的或者不响应 ping,我们可以使用这个参数告诉 Nmap 跳过 ping 测试,并扫描所有指定目标,假设它们是开启的。
  • -v:这会开启详细模式。Nmap 会展示更多关于它所做事情和得到回复的信息。参数可以在相同命令中重复多次:次数越多,就越详细(也就是说,-vv-v -v -v -v)。
  • -p N1,N2,Nn:如果我们打算测试特定端口或一些非标准端口,我们可能想这个参数。N1Nn是打算让 Nmap 扫描的端口。例如,要扫描端口 21,80 到 90,和 137,参数应为:-p 21,80-90,137
  • --script=script_name:Nmap 包含很多实用的漏洞检测、扫描和识别、登录测试、命令执行、用户枚举以及其它脚本。使用这个参数来告诉 Nmap 在目标的开放端口上运行脚本。你可能打算查看一些 Nmap 脚本,它们在:https://nmap.org/nsedoc/scripts/

 

文章来自:龙哥盟飞龙