一、背景
在网络环境复杂的当下,我们努力做一个清醒且明白的个人,在个人信息维护的时候可以更加有针对性,当前网络环境各方势力都对我们虎视眈眈,再这样的环境中一方面我们要避免成为黑暗的一面,但另一方面我们要了解黑暗背后将其公之于众,今天我们介绍一种技术,是对目标靶机进行渗透攻击的操作。
二、前期准备工作
首先我们要有靶机,需要一个模拟真实环境的靶机。这个靶机通常包括一台或多台主机,这些主机的操作系统可能包括Windows7,Windows Server 2003和Windows Server 2008等。此外,还需要安装一台攻击机,常用的操作系统为Kali Linux,它包含了大量的渗透测试工具。
准备好这些之后,接下来我们要进行信息收集相关工作
三、信息收集和试图攻击
信息收集是非常重要的一步,收集到信息的多少,给后期进行渗透攻击的难易程度是不一样的,尽量多的手机目标的信息会给后续的渗透事半功倍的效果。收集信息的思路有很多,例如:域名信息收集、页面信息收集、敏感信息收集、子域名信息收集、端口探测、CMS指纹识别、查找真实IP、敏感目录/文件收集、操作系统识别、社会工程学等等。信息收集详情可参考渗透测试——信息收集(详细)上面这些信息收集方式确实非常适用,可以在逐一使用收集信息,但是今天我们就在局域网对靶机攻击,其他的就不聊,单聊局域网中信息收集手段。
3.1 查看同网段IP
主要目的是探测同网段的ip地址,以找到靶机的地址:
使用netdiscover -r ip/mask 命令进行局域网中,一个网段的ip进行探测,例如: netdiscover -r 192.168.0.0/24探测同网段ip地址,找到靶机的地址。
Netdiscover是一种网络扫描工具,通过ARP扫描发现活动主机,可以通过主动和被动两种模式进行ARP扫描。通过主动发送ARP请求检查网络ARP流量,通过自动扫描模式扫描网络地址
选项 说明
- i device 网络接口
-r range 扫描范围,例如192.168.0.0/24,仅支持/8, /16和/24
-l file 扫描范围列表文件,每行一个范围
-p 被动模式:不发生任何报文,仅嗅探
-m file 扫描已知Mac地址和主机名的列表文件
-F filter 自定义pcap filter表达式(默认“arp”)
-s time 每个ARP请求间的休眠时间(毫秒,默认1ms)
-c count 发送每个ARP请求的次数,用于丢失数据包的网络,默认1次
-n node 扫描最后的源IP,默认为67(x.x.x.67),允许范围为2-253
-d 忽略自动扫描和快速模式的主配置文件,扫描默认的范围和IP
-f 启用快速模式扫描,扫描每个网段的.1、.100 和 .254
-P 产生输出到文件或者其他解析程序,扫描完成后退出,例如:netdiscover -P -r 192.168.20.0/16 | grep 192.168.20.100
-L 与-P类似,但在主动扫描后继续捕获ARP包
-N 不打印表头,仅在-P 或者-L启用时有效
通过上面的命令我们可以找到局域网中的靶机位置,也就是它的IP地址。接下来针对这个已知的IP,我们可以进行端口信息收集工作
3.2 端口探测
主要采用nmap工具,对给定IP进行扫描,探测这个ip的那些端口是存在服务,也许这些服务可以被利用
使用命令:nmap -sV 目标ip
主机发现
-sL:列表扫描,只需列出要扫描的目标
-sP:Ping扫描,只需确定主机是否处于可以互通的状态
-P0:将所有主机视为是互通状态,跳过主机发现
-PS or PA or PU [端口列表]:TCP SYN/ACK 或UDP发现探测到给定的端口
-PE or PP or PM:ICMP回显、时间戳和网络掩码请求发现探测器
-n:从不执行DNS解析
-R:始终DNS解析
扫描技术
-sS:TCP SYN扫描
优点:执行快,在没有入侵防火墙的网络上每秒钟可以扫描数千个端口,可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态
-sT:TCP connec()扫描
优点:当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。它比SYN扫描效率高
不足:可能会被目标机记录下连接,IDS可能会捕捉到
-sU:UDP扫描
DNS,SNMP,和DHCP (注册的端口是53,161/162,和67/68)是最常见的三个。 因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。
可以和-sS结合使用来同时检测两种协议
-sN;-sF;-sX:TCP Null, FIN, Xmas扫描(不经常使用)
优点:它们能躲过一些无状态防火墙和报文过滤路由器,这些扫描类型甚至比SYN扫描还要隐秘一些,但是现如今多数的IDS可以发现它
-sA:TCP ACK扫描
优点:它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。
端口扫描
-p:只扫描指定的端口
-p-:从端口1扫描到65535
-F:快速有限端口扫描 在nmap的nmap-services 文件中(对于-sO,是协议文件)指定您想要扫描的端口。 这比扫描所有65535个端口快得多。
-r:连续扫描端口,不随机
服务及版本探测
-sV:版本探测,也可以用-A同时打开操作系统探测和版本探测
-sR:RPC扫描,这种方法和许多端口扫描方法联合使用
操作系统探测
-O:启用操作系统检测
时间性能
-T0-5:0-5选择,常被与其他参数组合使用
模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。前两种模式用于IDS躲避,Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。默认模式为Normal,因此-T3 实际上是未做任何优化。Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。
3.3分析探测到端口
对nmap找到的端口,我们逐一分析看能否找到可用的信息,比如:我们找到某一个端口部署了一个web站点,那么可以去找一下web站点的源代码,进行源码分析找一下是否存在漏洞
如果发现了一个web站点,我们还可以通过dirb命令探测网站隐藏页面,命令:dirb http://ip:port 通过这一步我们也许可以得到一个robot.txt描述文件,或者一些隐藏目录可以被嗅探出来。
一些常见服务的端口:
- 常见数据库端口:
服务名称 | 端口 |
---|---|
Mysql | 3306 |
Oracle | 1521 |
Mssql | 1433 |
MongoDB | 27017 |
Redis | 6379 |
- 远程连接端口:
端口 | 服务名称 | 可能存在的漏洞 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | Rdp远程桌面连接 | Shift后门(需要winserver2003以下的系统)、爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码、代码执行 |
- 文件共享服务端口:
端口 | 服务名称 | 可能存在的漏洞 |
---|---|---|
21/22/69 | Ftp/Tftp文件传输协议 | 允许匿名上传、下载、爆破和嗅探 |
2049 | Nfs服务 | 配置不当 |
139 | Samba | 爆破、未授权访问、远程代码执行 |
389 | Ldap目录访问协议 | 注入、允许匿名访问、弱口令 |
- Web应用服务端口:
端口 | 服务名称 | 可能存在的漏洞 |
---|---|---|
80/443/8080 | 常见的web服务端口 | web攻击、爆破、对应服务器版本漏洞 |
7001/7002 | WebLogic控制台 | Java反序列化、弱口令 |
8080/8089 | Jboss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebSpere控制台 | java反序列化、弱口令 |
4848 | GlassFish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令、信息泄露、爆破 |
10000 | Webmin-Wen控制面板 | 弱口令 |
- 邮件服务端口:
端口 | 服务名称 | 可能存在的漏洞 |
---|---|---|
25 | SMTP邮件服务 | 邮件伪造 |
110 | POP3协议 | 爆破、嗅探 |
143 | IMAP协议 | 爆破 |
- 网络常见协议端口:
端口 | 服务名称 | 可能存在的漏洞 |
---|---|---|
53 | DNS域名系统 | 允许区域传送、DNS劫持、缓存投毒、欺骗 |
67/68 | DHCP服务 | 劫持、欺骗 |
161 | SNMP协议 | 爆破、搜索目标内网信息 |
- 特殊服务端口:
端口 | 服务名称 | 可能存在的漏洞 |
---|---|---|
2181 | Zookeeper服务 | 未授权访问 |
8069 | Zabbix服务 | 远程执行、SQL注入 |
9200/9300 | Elasticsearch服务 | 远程执行 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破、Rlogin登录 |
873 | Rsync服务 | 匿名访问、文件上传 |
3690 | Svn服务 | Svn泄露、未授权访问 |
50000 | SAP management Console | 远程执行 |
3.4 进行漏洞攻击
信息收集完成之后,我们需要从已知的信息参考以上暴露端口去推断可能存在的漏洞,此时我们可以采用漏洞平台发布的漏洞payload进行攻击,通过以上步骤,也许我们就能进入靶机上面。但往往我们进入靶机并非root权限。
四、提权
提权非常必要,因为入侵系统中是一个低权限的用户,其实很多操作是无法执行的,提权,是提高自己在操作系统中的权限,在网站入侵和系统入侵中使用。在计算机中,权限分为不同的类别,如匿名访问权限、来宾权限、用户权限、管理员权限以及系统权限。这些不同的权限对应着的权利各不相同。例如,在普通用户权限下会有很多限制,例如无法执行某些程序以及服务。因此,提权的目的通常是为了获得更高的权限,从而可以执行更多的操作或访问更多的资源。
如果是Linux可以参考内核提权、suid提权、sudo提权、环境变量提权、Cronjobs提权,Linux的提权可参考
如果是Windows提权可参考,web提权、普通用户提权、windows提权可参考
接下来讲一下横向渗透
五、横向渗透
如果通过突破某一个点,然后以这个点为支点,进行其他服务器的渗透。横向渗透就是在已经攻击到内网里时候通过肉鸡作为跳板去获取更多的计算机权限,从而控制整个内网,纵向渗透就是在一台肉鸡里获取更高的权限,就是所谓的提权。
横向渗透分为横向渗透IPC$、PTT票据传递攻击、PTH哈希传递攻击、PTK密钥传递攻击
横向渗透方法可参考
六、清理和报告
这一点其实对于攻击者非常重要,不然就会暴露其痕迹。常有windows系统痕迹清理和Linux系统痕迹清理。
在windows系统中,主要的日志分为以下三类:系统日志(SysEvent)、应用程序日志(AppEvent)、安全日志(SecEvent)。 我们可以通过win+r + eventvwr.msc 打开事件查看器。查看相应的事件信息。
6.1.Windows 日志清理命令
PowerShell -Command “& {Clear-Eventlog -Log Application,System,Security}”
msf清理
显示日志信息
run event_manager -i
#清除指定日志
run event_manager -c System
#清除所有日志
run event_manager -c
6.2.Linux 系统日志清理
Linux 大多数日志文件就是文本,常见痕迹清理位置:/var/log。如下图,日志比较多。
但是最常用的日志有:
user.log 用户信息日志
auth.log 用户登录日志
btmp 登录失败日志
为了方便,这里我们写了一个清理脚本。
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
echo > /var/log/dpkg.log
echo > /var/log/daemon.log
echo > /root/.bash_history
history -c
6.3.清除Web日志
web日志会记录用户对web页面的访问操作,web日志会记录访问时间、访问IP地址、访问资源,以及是否访问成功等信息。 这里我们以apache2为例、默认文件位置为var/log/apache2,常用的宝塔的日志文件/www/wwwlog
七、注意事项
本次纯粹进行的是技术交流和总结,主要对渗透测试前期、中期 和 后期整个过程进行了总结,在渗透测试操作的时候我们需要按照合法合规,在公开透明的方式进行相应的漏洞攻击,发现漏洞存在应及时告知系统相关运营方,切记不用做任何非法的操作。
- 合法合规:在进行渗透测试时必须遵守相关法律法规和道德规范,不得侵犯他人的合法权益。
- 保护机密信息:在测试过程中要注意保护客户的机密信息,避免泄露敏感数据。
- 选择合适的测试对象:应根据实际情况选择合适的测试对象,避免浪费资源或对无关系统造成影响。
- 与客户保持沟通:在测试过程中要与客户保持良好的沟通,及时反馈测试进展和结果。