内网安全管理
当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 007 Gorchitsa Rmx Alyona Vinnitskaya – 007 –>
互联网的迅速普及,网络应用已成为信息化发展中必不可少的一部分。然而,在感受网络所带来的便利的同时,也面临着各种各样的进攻和威胁:机密泄漏、数据丢失、网络滥用、身份冒用、非法入侵……
虽然大多数安全人员都非常重视内网安全问题,内网安全防护投入也不断增加,但是内网安全问题却仍然严峻。本文重在引导安全运维人员如何对内网进行安全检查和渗透。
一、内网安全检查/渗透介绍
1.1 攻击思路
1. 攻击外网服务器,获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板,攻击内网其他服务器,最后获得敏感数据,并将数据传递到攻击者,看情况安装长期后门,实现长期控制和获得敏感数据的方式;
2. 攻击办公网的系统、办公网电脑、办公网无线等方式,一般是采用社工,实现控制办公电脑,再用获得的办公网数据,可能是内网的各种登录账号和密码,再获取办公网或者生产网的有用数据。
一般内网安全检查使用第一种思路,实际的攻击2种思路结合实现。
1.2 敏感资料/数据/信息
高管/系统管理员/财务/人事/业务人员的个人电脑
文件服务器/共享服务器
邮件服务器
OA服务器
数据库服务器
1.3 攻击过程
按照第一种思路,个人认为可以分为4个阶段:
1. 信息收集
2. 漏洞验证/漏洞攻击
3. 后渗透
4. 日志清理
第二种思路,社工的比重更大一些,后续文章再做介绍。
二、信息收集
该阶段识别内网存活的主机 IP, 运行端口扫描和漏洞扫描获取可以利用的漏洞
2.1 主机发现
使用端口扫描工具可以实现主机发现的功能,但也有些动作小的主机发现工具(Kali),可以有效的发现存活主机。自己写个 ping 的循环脚本也可以。不受限的测试直接端口扫描了。
2.2 端口扫描
有授权的情况下直接使用 nmap 、masscan 等端口扫描工具直接获取开放的端口信息。
作为跳板机可以使用 Metasploit 做端口扫描,也可以在跳板主机上上传端口扫描工具,使用工具扫描。
入侵到服务器上也可以根据服务器的环境使用自定义的端口扫描脚本扫描端口。
备注:1、Python 端口扫描的介绍可以参照下述链接:
https://thief.one/2018/05/17/1/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
2、Windows 下基于 Powershell 的端口扫描脚本以参照下述链接:
https://github.com/BornToBeRoot/PowerShell_IPv4PortScanner/tree/master/Scripts
发现端口后使用客户端连接工具或者 nc 连接,获取服务端的 banner 信息。
2.3 漏洞扫描
有授权的情况下,使用绿盟极光、Nessus、Nexpose 等漏扫工具直接扫描目标,可以直接看到存活主机和主机的漏洞情况。
2.4 识别内网环境
获取目标的主机存活信息和端口开放信息后,就可以尝试分析目标的网络结构,安全防御策略。按照办公网和生产网分别说一下:
2.4.1 办公网
按照系统区分:
l OA系统
l 邮件系统
l 财务系统
l 文件共享系统
l 域控
l 企业版杀毒系统
l 上网行为管理系统
l 内部应用监控系统
按照网络区分:
l 管理网段
l 内部系统网段
l 按照部门区分的网段
按照设备区分:
l 个人电脑
l 内网服务器
l 网络设备
l 安全设备
办公网的安全防护水平一般较差(相对),能绕过杀毒软件基本上就畅通无阻了,利用信任关系容易扩大攻击面,获取数据也比生产网简单。
2.4.2 生产网
按照系统区分:
l 业务系统
l 运维监控系统
l 安全系统
l 按照网络区分:
l 各不同的业务网段
l 运维监控网段
l 安全管理网段
根据目标开展的不同业务,对应的服务器可能存在不同的网段上,分析服务器上运行的服务和进程可以推断目标使用的运维监控管理系统和安全防护系统,可以大概推断出入侵目标的 IT 运维水平和安全防护水平,在接下来的入侵考虑采用什么样的方法。
三、漏洞验证与攻击
使用端口扫描、漏洞扫描验证扫描目标开放的端口,在对应端口上开放的服务,运行该服务的软件和版本号。
如果只是使用端口扫描,只是发现开放的端口,接着使用 nc 可以获取端口上服务的 banner 信息,获取 banner 信息后需要在漏洞库上查找对应 CVE,后面就是验证漏洞是否存在。如果是使用漏洞扫描工具可以直接获取对应端口上的漏洞,后面也是验证漏洞。
安全检查一般是尽可能的发现所有漏洞,对漏洞的风险进行评估和修复。入侵的话只关注高危远程代码执行和敏感信息泄露漏洞等可以直接利用的漏洞。
漏洞验证可以找对应的 CVE 编号的 POC、EXP,利用代码在 ExploitDB 、seebug上查看或者在 github 上搜索是否有相关的漏洞验证或利用的工具。
3.1 We
b3.1.1 自定义 Web 应用
从公网直接攻击目标对外的 Web 应用,或者在授权的情况下在内网进行渗透测试,如果是入侵目的可以直接寻找注入、上传、代码执行、文件包含等高危漏洞,尝试获取系统权限,或者直接能拿到敏感数据。
允许扫描的话一般使用 AWVS 直接扫描,也可以使用专门扫描特定漏洞的扫描工具如 sqlmap、XSStrike 等工具扫描特定类型的漏洞。不允许直接扫描,使用 Burp 手工慢慢找了。
3.1.2 Web 中间件
1. Tomcat
Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。
端口号:8080
攻击方法:
l 默认口令、弱口令,爆破,tomcat5 默认有两个角色:tomcat和role1。其中账号both、tomcat、role1的默认密码都是tomcat。弱口令一般存在5以下的版本中。
l 在管理后台部署 war 后门文件
l 远程代码执行漏洞
l 参考:https://paper.seebug.org/399/
2. Jboss
是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的 J2EE 的一个Web 操作系统(operating system for web),它体现了 J2EE 规范中最新的技术。
端口:8080
攻击方法:弱口令,爆破
l 管理后台部署 war 后门
l 反序列化
l 远程代码执行
l 参考:http://www.vuln.cn/6300
3. WebLogic
WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
端口:7001,7002
攻击方法:弱口令、爆破,弱密码一般为weblogic/Oracle@123 or weblogic
l 管理后台部署 war 后门
l SSRF
l 反序列化漏洞
l weblogic_uac
l 参考:
https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf
4. WebSphere
IBM公司一套典型的电子商务应用开发工具及运行环境。
l 端口:默认端口:908*;第一个应用就是9080,第二个就是9081;控制台9090
l 攻击方法:
l 控制台登录爆破
l 很多内网 websphere 的控制台存在弱口令 / 默认口令,可以使用 admin/admin 以及 webshpere/webshpere 这种口令登录。 通过该口令登录控制台后,可以部署 war 包,从而获取到 WEBSHELL 。
l 反序列化
l 任意文件泄露
l 参考: https://gist.github.com/metall0id/bb3e9bab2b7caee90cb7
3.1.3 Web 框架
1. Struts2
Struts2是一个优雅的,可扩展的框架,用于创建企业准备的Java Web应用程序。出现的漏洞也着实的多每爆一个各大漏洞平台上就会被刷屏。
可利用漏洞:
l S2-046 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
l S2-045 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
l S2-037 CVE-2016-4438 Struts 2.3.20-2.3.28.1
l S2-032 CVE-2016-3081 Struts 2.3.18-2.3.28
l S2-020 CVE-2014-0094 Struts 2.0.0-2.3.16
参考:
l https://github.com/hktalent/myhktools
l https://github.com/Lucifer1993/struts-scan
l https://github.com/SecureSkyTechnology/study-struts2-s2-054_055-jackson-cve-2017-7525_cve-2017-15095
2. Spring 框架
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本。Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
可利用漏洞
l CVE-2018-1274
l CVE-2018-1270
l CVE-2018-1273
反序列化
目录穿越
参考
http://www.open-open.com/news/view/1225d07
3.1.4 Web 服务器
IIS:Windows 的 WWW 服务器
l 端口:80
l 攻击方法:
IIS,开启了 WebDAV,可以直接详服务器 PUT 文件
l 短文件名枚举漏洞
l 远程代码执行
l 提权漏洞
l 解析漏洞
l 参考:https://www.anquanke.com/post/id/85811
Apache
l 端口:80
l 攻击方法:
l 解析漏洞
l 目录遍历
Nginx
l 端口:80
l 攻击方法:
l 解析漏洞
l 目录遍历
l CVE-2016-1247:需要获取主机操作权限,攻击者可通过软链接任意文件来替换日志文件,从而实现提权以获取服务器的root权限。
l 参考:https://www.seebug.org/vuldb/ssvid-92538
lighttpd
l 端口:80
l 攻击方法:目录遍历
3.2 常见运维系统
一般分自动化部署和运维监控相关的的工具。漏洞可以通过搜索引擎搜索,github搜索,ExploitDB搜索,官网上的安全通告获取。
内网的通用类应用比较常见的问题是弱口令,如果一个管理员可以登录几个系统,那在这几个系统的账号、密码也基本上是一样的。
常见运维系统有很多,笔者对Gitlab相对较熟,以此为例:
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的项目仓库,可通过Web界面进行访问公开的或者私人项目。
可利用漏洞:
l 任意文件读取漏洞
l 意用户 token 泄露漏洞
l 命令执行漏洞
l 参考:http://rinige.com/index.php/archives/577/
3.3 常见 Web 应用
最常见是邮件应用,在搜索引擎上查找对应的漏洞,利用已知漏洞进行攻击。
一部分是使用腾讯企业邮箱、阿里企业邮箱的,很难有可利用的漏洞,另外一种是能独立部署的邮件系统,政企常用的邮箱应用:
l Coremail
l 亿邮
l 35互联
l TurboMail
l Exchange
l IBM Lotus
3.4 数据库/缓存/消息服务
3.4.1 MySQL数据库
默认端口:3306
攻击方法:
l 爆破:弱口令
l 身份认证漏洞:CVE-2012-2122
l 拒绝服务攻击
l Phpmyadmin万能密码绕过:用户名:‘localhost’@’@” 密码任意
l 提权
l 参考:https://www.seebug.org/appdir/MySQL
3.4.2 MSSQL数据库
默认端口:1433(Server 数据库服务)、1434(Monitor 数据库监控)
攻击方法:
l 爆破:弱口令/使用系统用户
l 注入
l 参考:https://www.anquanke.com/post/id/86011
3.4.3 Oracle数据库
默认端口:1521(数据库端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB数据库)、210(Oracle XDB FTP服务)
攻击方法:
l 爆破:弱口令
l 注入攻击;
l 漏洞攻击;
l 参考:https://www.leiphone.com/news/201711/JjzXFp46zEPMvJod.html
其他的数据库笔者不太熟,在此不做过多介绍。
3.5 常见服务/协议
3.5.1 FTP 服务
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
攻击方式:
l 爆破:ftp的爆破工具有很多,这里我推荐owasp的Bruter 以及msf中ftp爆破模块;
l 匿名访问:用户名:anonymous 密码:为空或任意邮箱
l 嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)
l 后门 vsftp
l 远程溢出
l 跳转攻击
3.5.2 NFS 服务
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。如今NFS具备了防止被利用导出文件夹的功能,但遗留系统中的NFS服务配置不当,则仍可能遭到恶意攻击者的利用。
l 攻击方法:未授权访问
l 参考:http://www.vuln.cn/6368
3.5.4 SSH 服务
SSH 是协议,通常使用 OpenSSH 软件实现协议应用。SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
端口:22
攻击方法:
l 爆破
l 后门
l 漏洞:28退格漏洞、OpenSSL漏洞
l 参考: https://cloud.tencent.com/developer/article/1078187
3.5.5 Telnet 服务
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在終端使用者的电脑上使用telnet程序,用它连接到服务器。終端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。
默认端口:21
攻击方法:
l 爆破
l 嗅探
3.5.6 Windows 远程连接
默认端口:3389
攻击方法
l 爆破
l Shift粘滞键后门:5次shift后门
l 利用ms12-020攻击3389端口
3.5.8 SMTP协议
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
默认端口:25(smtp)、465(smtps)
攻击方式:
l 爆破:弱口令
l 未授权访问
3.5.9 POP3协议
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
l 爆破;弱口令
l 未授权访问
3.5.10 DNS服务
默认端口:53
攻击方式:区域传输漏洞
3.5.12 SNMP协议
默认端口:161
攻击方式: 爆破:弱口令
3.5.13 DHCP服务
默认端口:67&68、546(DHCP Failover做双机热备的)
攻击方式:DHCP劫持
三、总结
笔者曾经在数据中心做过安全运维,在内网安全检查上积累些经验;上文主要是针对传统内网环境的检查和渗透,在云环境下:例如:VMware可以利用主机逃逸等漏洞,OpenStack可以利用权限绕过、信息泄露、代码执行等漏洞实现攻击,后续再总结分享。
如果您喜欢我的文章,请关注我的公众号,欢迎点赞、转发或收藏!