服务扫描

现在我们要更进一步,开始探索一台机器!首先需要做的是识别操作系统以及任何可能正在运行的服务。服务是运行在计算机上、为其他用户或计算机执行某些有用功能的应用程序。我们将这些托管有用服务的专用机器称为”服务器”,而不是工作站,用户可以通过工作站与这些各种服务进行交互和使用。我们感兴趣的是那些配置错误或存在漏洞的服务。我们不是要执行服务预期应有的操作,而是想看看是否能迫使服务执行某些非预期的、支持我们目标的操作,例如执行我们选择的命令。

计算机会被分配一个IP地址,这使它们能够在网络上被唯一标识和访问。这些计算机上运行的服务可能会被分配一个端口号,以便访问该服务。如前所述,端口号范围从1到65,535,其中1到1,023的知名端口范围是为特权服务保留的。端口0在TCP/IP网络中是一个保留端口,不用于TCP或UDP消息。如果有任何尝试绑定到端口0(例如某个服务),它将会绑定到端口1,024以上的下一个可用端口,因为端口0被视为”通配符”端口。

要远程访问一个服务,我们需要使用正确的IP地址和端口号进行连接,并使用该服务能理解的语言。手动检查所有65,535个端口以寻找任何可用服务将非常繁琐,因此人们创建了工具来自动化这个过程并为我们扫描端口范围。最常用的扫描工具之一是Nmap(网络映射器)。

Nmap

让我们从最基本的扫描开始。假设我们想要对位于10.129.42.253的目标执行基本扫描。为此,我们应该输入nmap 10.129.42.253并按回车。我们看到Nmap扫描完成得非常快。这是因为如果我们不指定任何额外选项,Nmap默认只会扫描最常见的1,000个端口。扫描输出显示端口21、22、80、139和445是可用的。

 Service Scanning
 guhusf@htb[/htb]$ nmap 10.129.42.253
 ​
 Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-25 16:07 EST
 Nmap scan report for 10.129.42.253
 Host is up (0.11s latency).
 Not shown: 995 closed ports
 PORT   STATE SERVICE
 21/tcp open ftp
 22/tcp open ssh
 80/tcp open http
 139/tcp open netbios-ssn
 445/tcp open microsoft-ds
 ​
 Nmap done: 1 IP address (1 host up) scanned in 2.19 seconds

在PORT标题下,它还告诉我们这些是TCP端口。默认情况下,除非特别要求执行UDP扫描,否则Nmap将进行TCP扫描。

STATE标题确认这些端口是开放的。有时我们会看到列出其他状态不同的端口,例如filtered(被过滤)。如果防火墙只允许从特定地址访问这些端口,就会发生这种情况。

SERVICE标题告诉我们通常映射到特定端口号的服务名称。但是,默认扫描不会告诉我们该端口上具体监听的是什么服务。在我们指示Nmap与服务交互并尝试获取识别信息之前,它完全可能是另一个服务。

随着我们逐渐熟悉,我们会注意到一些端口通常与Windows或Linux相关联。例如,端口3389是远程桌面服务的默认端口,这强烈表明目标是Windows机器。在我们当前的场景中,端口22(SSH)可用表明目标运行的是Linux/Unix,但该服务也可以在Windows上配置。让我们运行一次更高级的Nmap扫描,以收集有关目标设备的更多信息。

我们可以使用-sC参数指定应使用Nmap脚本来尝试获取更详细的信息。-sV参数指示Nmap执行版本扫描。在此扫描中,Nmap将对目标系统上的服务进行指纹识别,并识别服务协议、应用程序名称和版本。版本扫描基于一个包含1,000多个服务签名的综合数据库。最后,-p-告诉Nmap我们想要扫描所有65,535个TCP端口。

 Service Scanning
 guhusf@htb[/htb]$ nmap -sV -sC -p- 10.129.42.253
 ​
 Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-25 16:18 EST
 Nmap scan report for 10.129.42.253
 Host is up (0.11s latency).
 Not shown: 65530 closed ports
 PORT   STATE SERVICE     VERSION
 21/tcp open ftp         vsftpd 3.0.3
 | ftp-anon: Anonymous FTP login allowed (FTP code 230)
 |_drwxr-xr-x   2 ftp     ftp         4096 Feb 25 19:25 pub
 | ftp-syst:
 |   STAT:
 | FTP server status:
 |     Connected to ::ffff:10.10.14.2
 |     Logged in as ftp
 |     TYPE: ASCII
 |     No session bandwidth limit
 |     Session timeout in seconds is 300
 |     Control connection is plain text
 |     Data connections will be plain text
 |     At session startup, client count was 2
 |     vsFTPd 3.0.3 - secure, fast, stable
 |_End of status
 22/tcp open ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
 80/tcp open http       Apache httpd 2.4.41 ((Ubuntu))
 |_http-server-header: Apache/2.4.41 (Ubuntu)
 |_http-title: PHP 7.4.3 - phpinfo()
 139/tcp open netbios-ssn Samba smbd 4.6.2
 445/tcp open netbios-ssn Samba smbd 4.6.2
 Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
 ​
 Host script results:
 |_nbstat: NetBIOS name: GS-SVCSCAN, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
 | smb2-security-mode:
 |   2.02:
 |_   Message signing enabled but not required
 | smb2-time:
 |   date: 2021-02-25T21:21:51
 |_ start_date: N/A
 ​
 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
 Nmap done: 1 IP address (1 host up) scanned in 233.68 seconds

这次返回的信息要多得多。我们看到扫描65,535个端口比扫描1,000个端口花费的时间要长得多。-sC-sV选项也会增加扫描持续时间,因为它们不是执行简单的TCP握手,而是执行更多检查。我们注意到这次有一个VERSION标题,报告了服务版本,如果可能的话,还会报告操作系统。

到目前为止,我们知道操作系统是Ubuntu Linux。应用程序版本也有助于揭示目标操作系统版本。以OpenSSH为例。我们看到报告的版本是OpenSSH 8.2p1 Ubuntu 4ubuntu0.1。通过检查其他Ubuntu SSH软件包的更新日志,我们看到发布版本采用1:7.3p1-1ubuntu0.1这样的格式。将我们的版本更新为符合此格式,得到1:8.2p1-4ubuntu0.1。在线快速搜索此版本显示它包含在Ubuntu Linux Focal Fossa 20.04中。

google1

另一个快速搜索显示该操作系统的发布日期是2020年4月23日。

google2

然而,值得注意的是,这种交叉引用技术并不完全可靠,因为有可能在旧版操作系统上安装更新的应用程序包。脚本扫描标志-sC导致Nmap报告Web服务器上托管的任何网页的服务器头信息(http-server-header)和页面标题(http-title)。网页标题PHP 7.4.3 - phpinfo()表明这是一个PHPInfo文件,通常是为了确认PHP已成功安装而手动创建的。该标题(以及PHPInfo页面)也揭示了PHP版本,如果存在漏洞,值得注意。

phpinfo

Nmap脚本

指定-sC将对目标运行许多有用的默认脚本,但在某些情况下需要运行特定脚本。例如,在评估范围内,我们可能被要求审计一个大型的Citrix安装。我们可以使用此Nmap脚本来审计严重的Citrix NetScaler漏洞(CVE-2019–19781),同时Nmap还有其他脚本来审计Citrix安装。

 Service Scanning
 guhusf@htb[/htb]$ locate scripts/citrix
 ​
 /usr/share/nmap/scripts/citrix-brute-xml.nse
 /usr/share/nmap/scripts/citrix-enum-apps-xml.nse
 /usr/share/nmap/scripts/citrix-enum-apps.nse
 /usr/share/nmap/scripts/citrix-enum-servers-xml.nse
 /usr/share/nmap/scripts/citrix-enum-servers.nse

运行Nmap脚本的语法是nmap --script <脚本名称> -p<端口> <主机>

Nmap脚本是增强我们扫描功能的好方法,仔细研究可用选项将会带来回报。请查看”使用Nmap进行网络枚举“模块以更详细地研究Nmap工具。

攻击网络服务

横幅抓取

如前所述,横幅抓取是一种快速指纹识别服务的有用技术。通常,服务会在连接启动后显示一个横幅来标识自己。如果指定了语法nmap -sV --script=banner <目标>,Nmap将尝试抓取横幅。我们也可以尝试使用Netcat手动完成此操作。让我们再举一个例子,使用nc版本的Netcat:

 Service Scanning
 guhusf@htb[/htb]$ nc -nv 10.129.42.253 21
 ​
 (UNKNOWN) [10.129.42.253] 21 (ftp) open
 220 (vsFTPd 3.0.3)

这表明服务器上的vsFTPd版本是3.0.3。我们也可以使用Nmap强大的脚本引擎自动化此过程:nmap -sV --script=banner -p21 10.10.10.0/24

FTP

值得熟悉FTP,因为它是一个标准协议,而且该服务通常可能包含有趣的数据。对FTP默认端口(21)的Nmap扫描揭示了我们之前识别的vsftpd 3.0.3安装。此外,它还报告允许匿名身份验证,并且有一个pub目录可用。

 Service Scanning
 guhusf@htb[/htb]$ nmap -sC -sV -p21 10.129.42.253
 ​
 Starting Nmap 7.80 ( https://nmap.org ) at 2020-12-20 00:54 GMT
 Nmap scan report for 10.129.42.253
 Host is up (0.081s latency).
 ​
 PORT   STATE SERVICE VERSION
 21/tcp open ftp     vsftpd 3.0.3
 | ftp-anon: Anonymous FTP login allowed (FTP code 230)
 |_drwxr-xr-x   2 ftp     ftp         4096 Dec 19 23:50 pub
 | ftp-syst:
 |   STAT:
 | FTP server status:
 |     Connected to ::ffff:10.10.14.2
 |     Logged in as ftp
 |     TYPE: ASCII
 |     No session bandwidth limit
 |     Session timeout in seconds is 300
 |     Control connection is plain text
 |     Data connections will be plain text
 |     At session startup, client count was 3
 |     vsFTPd 3.0.3 - secure, fast, stable
 |_End of status
 Service Info: OS: Unix
 ​
 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
 Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds

让我们使用ftp命令行实用程序连接到该服务。

 Service Scanning
 guhusf@htb[/htb]$ ftp -p 10.129.42.253
 ​
 Connected to 10.129.42.253.
 220 (vsFTPd 3.0.3)
 Name (10.129.42.253:user): anonymous
 230 Login successful.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ​
 ftp> ls
 227 Entering Passive Mode (10,129,42,253,158,60).
 150 Here comes the directory listing.
 drwxr-xr-x   2 ftp     ftp         4096 Feb 25 19:25 pub
 226 Directory send OK.
 ​
 ftp> cd pub
 250 Directory successfully changed.
 ​
 ftp> ls
 227 Entering Passive Mode (10,129,42,253,182,129).
 150 Here comes the directory listing.
 -rw-r--r--   1 ftp     ftp           18 Feb 25 19:25 login.txt
 226 Directory send OK.
 ​
 ftp> get login.txt
 local: login.txt remote: login.txt
 227 Entering Passive Mode (10,129,42,253,181,53).
 150 Opening BINARY mode data connection for login.txt (18 bytes).
 226 Transfer complete.
 18 bytes received in 0.00 secs (165.8314 kB/s)
 ​
 ftp> exit
 221 Goodbye.

在上面的shell中,我们看到FTP支持常见的命令,如cdls,并允许我们使用get命令下载文件。检查下载的login.txt发现了我们可以用来进一步访问系统的凭据。

 Service Scanning
 guhusf@htb[/htb]$ cat login.txt
 ​
 admin:ftp@dmin123

SMB

SMB(服务器消息块)是Windows机器上普遍存在的协议,它为纵向和横向移动提供了许多途径。敏感数据(包括凭据)可能存在于网络文件共享中,并且某些SMB版本可能容易受到诸如EternalBlue之类的RCE漏洞攻击。仔细枚举这个巨大的潜在攻击面至关重要。Nmap有许多用于枚举SMB的脚本,例如smb-os-discovery.nse,它将与SMB服务交互以提取报告的操作系统版本。

 Service Scanning
 guhusf@htb[/htb]$ nmap --script smb-os-discovery.nse -p445 10.10.10.40
 ​
 Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-27 00:59 GMT
 Nmap scan report for doctors.htb (10.10.10.40)
 Host is up (0.022s latency).
 ​
 PORT   STATE SERVICE
 445/tcp open microsoft-ds
 ​
 Host script results:
 | smb-os-discovery:
 |   OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
 |   OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
 |   Computer name: CEO-PC
 |   NetBIOS computer name: CEO-PC\x00
 |   Workgroup: WORKGROUP\x00
 |_ System time: 2020-12-27T00:59:46+00:00
 ​
 Nmap done: 1 IP address (1 host up) scanned in 2.71 seconds

在这种情况下,主机运行的是旧版的Windows 7操作系统,我们可以进行进一步的枚举以确认它是否容易受到EternalBlue的攻击。Metasploit Framework有几个用于EternalBlue的模块,可以用来验证漏洞并利用它,正如我们将在后续章节中看到的那样。我们可以针对本模块部分的目标运行扫描,以从SMB服务收集信息。我们可以确定主机运行的是Linux内核,Samba版本4.6.2,主机名是GS-SVCSCAN。

 Service Scanning
 guhusf@htb[/htb]$ nmap -A -p445 10.129.42.253
 ​
 Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-25 16:29 EST
 Nmap scan report for 10.129.42.253
 Host is up (0.11s latency).
 ​
 PORT   STATE SERVICE     VERSION
 445/tcp open netbios-ssn Samba smbd 4.6.2
 Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
 Aggressive OS guesses: Linux 2.6.32 (95%), Linux 3.1 (95%), Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (94%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%), Adtran 424RG FTTH gateway (92%), Linux 2.6.39 - 3.2 (92%), Linux 3.1 - 3.2 (92%), Linux 3.2 - 4.9 (92%)
 No exact OS matches for host (test conditions non-ideal).
 Network Distance: 2 hops
 ​
 Host script results:
 |_nbstat: NetBIOS name: GS-SVCSCAN, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
 | smb2-security-mode:
 |   2.02:
 |_   Message signing enabled but not required
 | smb2-time:
 |   date: 2021-02-25T21:30:06
 |_ start_date: N/A
 ​
 TRACEROUTE (using port 445/tcp)
 HOP RTT       ADDRESS
 1   111.62 ms 10.10.14.1
 2   111.89 ms 10.129.42.253
 ​
 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
 Nmap done: 1 IP address (1 host up) scanned in 12.72 seconds

共享

SMB允许用户和管理员共享文件夹,并使其他用户能够远程访问它们。通常这些共享中包含的文件含有敏感信息,如密码。一个可以枚举并与SMB共享交互的工具是smbclient-L标志指定我们要检索远程主机上可用共享的列表,而-N则抑制密码提示。

 Service Scanning
 guhusf@htb[/htb]$ smbclient -N -L \\\\10.129.42.253
 ​
  Sharename       Type     Comment
  ---------       ----     -------
  print$         Disk     Printer Drivers
  users           Disk
  IPC$           IPC       IPC Service (gs-svcscan server (Samba, Ubuntu))
 SMB1 disabled -- no workgroup available

这揭示了非默认共享users。让我们尝试以guest用户身份连接。

 Service Scanning
 guhusf@htb[/htb]$ smbclient \\\\10.129.42.253\\users
 ​
 Enter WORKGROUP\users's password:
 Try "help" to get a list of possible commands.
 ​
 smb: \> ls
 NT_STATUS_ACCESS_DENIED listing \*
 ​
 smb: \> exit

ls命令导致访问被拒绝消息,表明不允许guest访问。让我们使用用户bob(bob:Welcome1)的凭据再试一次。

 Service Scanning
 guhusf@htb[/htb]$ smbclient -U bob \\\\10.129.42.253\\users
 ​
 Enter WORKGROUP\bob's password:
 Try "help" to get a list of possible commands.
 ​
 smb: \> ls
  .                                   D       0 Thu Feb 25 16:42:23 2021
  ..                                 D       0 Thu Feb 25 15:05:31 2021
  bob                                 D       0 Thu Feb 25 16:42:23 2021
 ​
  4062912 blocks of size 1024. 1332480 blocks available
 ​
 smb: \> cd bob
 ​
 smb: \bob\> ls
  .                                   D       0 Thu Feb 25 16:42:23 2021
  ..                                 D       0 Thu Feb 25 16:42:23 2021
  passwords.txt                       N     156 Thu Feb 25 16:42:23 2021
 ​
  4062912 blocks of size 1024. 1332480 blocks available
 ​
 smb: \bob\> get passwords.txt
 getting file \bob\passwords.txt of size 156 as passwords.txt (0.3 KiloBytes/sec) (average 0.3 KiloBytes/sec)

我们使用凭据成功访问了users共享,并获得了对有趣文件passwords.txt的访问权限,该文件可以使用get命令下载。

SNMP

SNMP社区字符串提供有关路由器或设备的信息和统计信息,帮助我们获得对它的访问权限。制造商默认的社区字符串publicprivate通常保持不变。在SNMP版本1和2c中,访问是使用明文社区字符串控制的,如果我们知道名称,就可以获得访问权限。加密和身份验证仅在SNMP版本3中添加。可以从SNMP获取大量信息。检查进程参数可能会显示在命令行上传递的凭据,鉴于企业环境中密码重用普遍存在,这些凭据可能被重用于其他外部可访问的服务。还可以揭示路由信息、绑定到其他接口的服务以及已安装软件的版本。

 Service Scanning
 guhusf@htb[/htb]$ snmpwalk -v 2c -c public 10.129.42.253 1.3.6.1.2.1.1.5.0
 ​
 iso.3.6.1.2.1.1.5.0 = STRING: "gs-svcscan"
 Service Scanning
 guhusf@htb[/htb]$ snmpwalk -v 2c -c private 10.129.42.253
 ​
 Timeout: No Response from 10.129.42.253

可以使用诸如onesixtyone之类的工具,使用常见社区字符串的字典文件(例如该工具GitHub存储库中包含的dict.txt文件)来暴力破解社区字符串名称。

 Service Scanning
 guhusf@htb[/htb]$ onesixtyone -c dict.txt 10.129.42.254
 ​
 Scanning 1 hosts, 51 communities
 10.129.42.254 [public] Linux gs-svcscan 5.4.0-66-generic #74-Ubuntu SMP Wed Jan 27 22:54:38 UTC 2021 x86_64

结论

服务扫描和枚举是一个广阔的主题,随着我们逐步深入,我们将学习更多相关内容。此处涵盖的方面适用于许多网络,包括 HTB 机。

问题

1.对目标执行 Nmap 扫描。Nmap 显示端口 8080 上运行的服务版本是什么?

此处内容需要输入密码才查看
仅限华巅网安兴趣小组成员获取密码查看。

2.对目标执行 Nmap 扫描,识别出运行 telnet 服务的非默认端口。

此处内容需要输入密码才查看
仅限华巅网安兴趣小组成员获取密码查看。

3.列出目标主机上可用的 SMB 共享。以 bob 用户身份连接到可用的共享。连接后,访问名为’flag’的文件夹,并提交 flag.txt 文件的内容。

此处内容需要输入密码才查看
仅限华巅网安兴趣小组成员获取密码查看。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇