# 渗透测试笔记（一）：主机发现与端口扫描


## 一、主机发现

### arp-scan与arping

arp-scan 可用于快速发现同一局域网下的主机：

```shell
arp-scan -l
```

与 `ping` 相比，`arping` 可用于检验目标主机是否存活：

```shell
arping -c 1 [ip]
```

### nmap

扫描一系列 IP，查看存活主机：

```shell
nmap -sn [ip] -oA pingsweep -PE
```

`[ip]` 参数说明：

- 单个 IP 范围，例如 `192.168.1.0/24` 或 `192.168.1.0-255`，都表示 `192.168.1.0-192.168.1.255` 的 IP 地址。
- IP 范围列表：一般采用 `-iL` 参数以文件方式输入，在文件中每个范围占一行。

实例：

```shell
nmap -sn 192.168.1.0/24 -oA pingsweep -PE
nmap -sn -iL ranges.txt -oA pingsweep -PE
```

扫描后保存所有存活主机：

```shell
grep "Up" pingsweep.gnmap | cut -d " " -f2 > targets.txt
```

## 二、端口扫描

基本语法：

```shell
nmap -Pn -p [ports] [ip]
```

参数：

- `-Pn`：跳过主机发现，用于已经确认主机存活的情况下。
- `-n`：不进行 DNS 解析，用于输入 IP 时不想查询域名信息时。
- `-p [ports]`：`[ports]` 为以逗号分割的端口号，`-p-` 表示扫描所有端口（不推荐），不输入 `[ports]` 表示扫描预设的 1000 个常见端口（不推荐）。
- `-sV`：检测端口的服务信息。
- `-A`：启用操作系统检测、服务版本检测、Nmap 脚本扫描（检测漏洞）和 Traceroute 路径跟踪。

示例：

```shell
nmap -Pn -n -p 22,25,53,80,443,445,1433,3306,3389,5800,5900,8080,8443 [ip] -sV -A -oA portsweep
```


---

> 作者: [fupcode](https://github.com/fupcode)  
> URL: https://fupcode.com/blog/posts/reverse-engineering/learning-reverse1/  

