1. 內網安全檢查/滲透介紹
1.1 攻擊思路
有2種思路:php
- 攻擊外網服務器,獲取外網服務器的權限,接着利用入侵成功的外網服務器做爲跳板,攻擊內網其餘服務器,最後得到敏感數據,並將數據傳遞到攻擊者,看狀況安裝長期後門,實現長期控制和得到敏感數據的方式;
- 攻擊辦公網的系統、辦公網電腦、辦公網無線等方式,通常是採用社工,實現控制辦公電腦,再用得到的辦公網數據,多是內網的各類登陸帳號和密碼,再獲取辦公網或者生產網的有用數據。
通常內網安全檢查使用第一種思路,實際的攻擊2種思路結合實現。html
1.2 敏感資料/數據/信息
- 高管/系統管理員/財務/人事/業務人員的我的電腦
- 文件服務器/共享服務器
- 郵件服務器
- OA服務器
- 數據庫服務器
1.3 攻擊過程
按照第一種思路,我的認爲能夠分爲4個階段:python
- 信息收集
- 漏洞驗證/漏洞攻擊
- 後滲透
- 日誌清理
第二種思路,社工的比重更大一些,本篇很少作介紹。mysql
2 信息收集
該階段識別內網存活的主機 IP, 運行端口掃描和漏洞掃描獲取能夠利用的漏洞linux
2.1 主機發現
使用端口掃描工具能夠實現主機發現的功能,但也有些動做小的主機發現工具(Kali),能夠有效的發現存活主機。本身寫個 ping 的循環腳本也能夠。ios
不受限的測試直接端口掃描了。git
2.2 端口掃描
有受權的狀況下直接使用 nmap 、masscan 等端口掃描工具直接獲取開放的端口信息。
做爲跳板機可使用 Metasploit 作端口掃描,也能夠在跳板主機上上傳端口掃描工具,使用工具掃描。github
入侵到服務器上也能夠根據服務器的環境使用自定義的端口掃描腳本掃描端口。web
python 3 的端口掃描腳本算法
# This script runs on Python 3
import socket, threading
def TCP_connect(ip, port_number, delay, output):
TCPsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
TCPsock.settimeout(delay)
try:
TCPsock.connect((ip, port_number))
output[port_number] = 'Listening'
except:
output[port_number] = ''
def scan_ports(host_ip, delay):
threads = [] # To run TCP_connect concurrently
output = {} # For printing purposes
# Spawning threads to scan ports
for i in range(10000):
t = threading.Thread(target=TCP_connect, args=(host_ip, i, delay, output))
threads.append(t)
# Starting threads
for i in range(10000):
threads[i].start()
# Locking the script until all threads complete
for i in range(10000):
threads[i].join()
# Printing listening ports from small to large
for i in range(10000):
if output[i] == 'Listening':
print(str(i) + ': ' + output[i])
def main():
host_ip = input("Enter host IP: ")
delay = int(input("How many seconds the socket is going to wait until timeout: "))
scan_ports(host_ip, delay)
if __name__ == "__main__":
main()
有個使用 Python 端口掃描的介紹
https://thief.one/2018/05/17/1/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
Windows 下基於 Powershell 的端口掃描腳本。
https://github.com/BornToBeRoot/PowerShell_IPv4PortScanner/tree/master/Scripts
發現端口後使用客戶端鏈接工具或者 nc 鏈接,獲取服務端的 banner 信息。
2.3 漏洞掃描
有受權的狀況下,使用綠盟極光、Nessus、Nexpose 等漏掃工具直接掃描目標,能夠直接看到存活主機和主機的漏洞狀況。
2.4 識別內網環境
獲取目標的主機存活信息和端口開放信息後,就能夠嘗試分析目標的網絡結構,安全防護策略。按照辦公網和生產網分別說一下:
2.4.1 辦公網
按照系統區分:
- OA系統
- 郵件系統
- 財務系統
- 文件共享系統
- 域控
- 企業版殺毒系統
- 上網行爲管理系統
- 內部應用監控系統
按照網絡區分:
- 管理網段
- 內部系統網段
- 按照部門區分的網段
按照設備區分:
- 我的電腦
- 內網服務器
- 網絡設備
- 安全設備
辦公網的安全防禦水平通常較差(相對),能繞過殺毒軟件基本上就暢通無阻了,利用信任關係容易擴大攻擊面,獲取數據也比生產網簡單。
2.4.2 生產網
按照系統區分:
- 業務系統
- 運維監控系統
- 安全系統
按照網絡區分:
- 各不一樣的業務網段
- 運維監控網段
- 安全管理網段
根據目標開展的不一樣業務,對應的服務器可能存在不一樣的網段上,分析服務器上運行的服務和進程能夠推斷目標使用的運維監控管理系統和安全防禦系統,能夠大概推斷出入侵目標的 IT 運維水平和安全防禦水平,在接下來的入侵考慮採用什麼樣的方法。
2 漏洞驗證/漏洞攻擊
使用端口掃描、漏洞掃描驗證掃描目標開放的端口,在對應端口上開放的服務,運行該服務的軟件和版本號。
若是隻是使用端口掃描,只是發現開放的端口,接着使用 nc 能夠獲取端口上服務的 banner 信息,獲取 banner 信息後須要在漏洞庫上查找對應 CVE,後面就是驗證漏洞是否存在。若是是使用漏洞掃描工具能夠直接獲取對應端口上的漏洞,後面也是驗證漏洞。
安全檢查通常是儘量的發現全部漏洞,對漏洞的風險進行評估和修復。入侵的話只關注高危遠程代碼執行和敏感信息泄露漏洞等能夠直接利用的漏洞。
漏洞驗證能夠找對應的 CVE 編號的 POC、EXP,利用代碼在 ExploitDB 、seebug上查看或者在 github 上搜索是否有相關的漏洞驗證或利用的工具。
2.1 Web
2.1.1 自定義 Web 應用
從公網直接攻擊目標對外的 Web 應用,或者在受權的狀況下在內網進行滲透測試,若是是入侵目的能夠直接尋找注入、上傳、代碼執行、文件包含等高危漏洞,嘗試獲取系統權限,或者直接能拿到敏感數據。
容許掃描的話通常使用 WVS 直接掃描,也可使用專門掃描特定漏洞的掃描工具如 sqlmap、XSStrike 等工具掃描特定類型的漏洞。不容許直接掃描,使用 Burp 手工慢慢找了。
2.1.2 Web 中間件
1. Tomcat
Tomcat是Apache Jakarta軟件組織的一個子項目,Tomcat是一個JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基礎上發展起來的一個JSP和Servlet規範的標準實現,使用Tomcat能夠體驗JSP和Servlet的最新規範。
- 端口號:8080
- 攻擊方法:
- 默認口令、弱口令,爆破,tomcat5 默認有兩個角色:tomcat和role1。其中帳號both、tomcat、role1的默認密碼都是tomcat。弱口令通常存在5如下的版本中。
- 在管理後臺部署 war 後門文件
- 遠程代碼執行漏洞
- 參考:
2. Jboss
是一個運行EJB的J2EE應用服務器。它是開放源代碼的項目,遵循最新的J2EE規範。從JBoss項目開始至今,它已經從一個EJB容器發展成爲一個基於的 J2EE 的一個Web 操做系統(operating system for web),它體現了 J2EE 規範中最新的技術。
- 端口:8080
- 攻擊方法:
- 弱口令,爆破
- 管理後臺部署 war 後門
- 反序列化
- 遠程代碼執行
- 參考:
3. WebLogic
WebLogic是美國Oracle公司出品的一個Application Server,確切的說是一個基於JAVAEE架構的中間件,WebLogic是用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
- 端口:7001,7002
- 攻擊方法:
- 弱口令、爆破,弱密碼通常爲weblogic/Oracle@123 or weblogic
- 管理後臺部署 war 後門
- SSRF
- 反序列化漏洞
- weblogic_uac
- 參考:
4. WebSphere
IBM公司一套典型的電子商務應用開發工具及運行環境。
- 端口:默認端口:908*;第一個應用就是9080,第二個就是9081;控制檯9090
- 攻擊方法:
- 控制檯登陸爆破
- 不少內網 websphere 的控制檯存在弱口令 / 默認口令,可使用 admin/admin 以及 webshpere/webshpere 這種口令登陸。 經過該口令登陸控制檯後,能夠部署 war 包,從而獲取到 WEBSHELL 。
- 反序列化
- 任意文件泄露
- 參考:
5. Glassfish
2.1.3 Web 框架
1. Struts2
Struts2是一個優雅的,可擴展的框架,用於建立企業準備的Java Web應用程序。出現的漏洞也着實的多每爆一個各大漏洞平臺上就會被刷屏。
- 可利用漏洞
- S2-046 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
- S2-045 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
- S2-037 CVE-2016-4438 Struts 2.3.20-2.3.28.1
- S2-032 CVE-2016-3081 Struts 2.3.18-2.3.28
- S2-020 CVE-2014-0094 Struts 2.0.0-2.3.16
- S2-019 CVE-2013-4316 Struts 2.0.0-2.3.15.1
- S2-016 CVE-2013-2251 Struts 2.0.0-2.3.15
- S2-013 CVE-2013-1966 Struts 2.0.0-2.3.14
- S2-009 CVE-2011-3923 Struts 2.0.0-2.3.1.1
- S2-005 CVE-2010-1870 Struts 2.0.0-2.1.8.1
- 參考:
2. Spring 框架
Spring Framework 是一個開源的Java/Java EE全功能棧(full-stack)的應用程序框架,以Apache License 2.0開源許可協議的形式發佈,也有.NET平臺上的移植版本。Spring Framework提供了一個簡易的開發方式,這種開發方式,將避免那些可能導致底層代碼變得繁雜混亂的大量的屬性文件和幫助類。
- 可利用漏洞
- CVE-2010-1622
- CVE-2018-1274
- CVE-2018-1270
- CVE-2018-1273
- 反序列化
- 目錄穿越
- 參考
2.1.4 Web 服務器
-
IIS:Windows 的 WWW 服務器
- 端口:80
- 攻擊方法:
- IIS,開啓了 WebDAV,能夠直接詳服務器 PUT 文件
- 短文件名枚舉漏洞
- 遠程代碼執行
- 提權漏洞
- 解析漏洞
- 參考:
-
Apache
- 端口:80
- 攻擊方法:
- 解析漏洞
- 目錄遍歷
-
Nginx
- 端口:80
- 攻擊方法:
- 解析漏洞
- 目錄遍歷
- CVE-2016-1247:須要獲取主機操做權限,攻擊者可經過軟連接任意文件來替換日誌文件,從而實現提權以獲取服務器的root權限。
- 參考:
-
lighttpd
- 端口:80
- 攻擊方法:
- 目錄遍歷
2.2 常見運維繫統
通常分自動化部署和運維監控相關的的工具。漏洞能夠經過搜索引擎搜索,github搜索,ExploitDB搜索,官網上的安全通告獲取。
內網的通用類應用比較常見的問題是弱口令,若是一個管理員能夠登陸幾個系統,那在這幾個系統的帳號、密碼也基本上是同樣的。
2.2.1 Gitlab
GitLab是一個利用 Ruby on Rails 開發的開源應用程序,實現一個自託管的項目倉庫,可經過Web界面進行訪問公開的或者私人項目。
- 可利用漏洞:
- 任意文件讀取漏洞
- 意用戶 token 泄露漏洞
- 命令執行漏洞
- 參考:
2.2.2 Jenkins
Jenkins是一種跨平臺的持續集成和交付的應用軟件,它便於不斷穩定地交付新的軟件版本,並提升你的工做效率。這款開發運維工具還讓開發人員更容易把項目的變化整合起來,並使用大量的測試和部署技術。
- 可利用漏洞:
- 遠程代碼執行漏洞
- 反序列化漏洞
- 未受權訪問漏洞
- 登陸入口爆破
- 參考
2.2.3 Puppet
Puppet Enterprise專門管理基礎設施即代碼(IAC),在這種類型的IT基礎設施配置過程當中,系統用代碼而不是腳本流程來自動構建、管理和配置。因爲它是代碼,整個過程易於重複。Puppet有助於更容易控制版本、自動化測試和持續交付,能夠更快速地響應問題或錯誤。
- 可利用漏洞,不多公開的POC
- 反序列化
- 遠程命令執行
2.2.4 Ansible
Ansible是一種配置和管理工具,面向客戶端的軟件部署和配置,支持Unix、Linux和Windows。它使 用JSON和YAML,而不是IAC,根本不須要節點代理就能夠安裝。它能夠經過OpenStack在內部系統上使用,也能夠在亞馬遜EC2上使用。
- 可利用漏洞
- 遠程代碼執行
2.2.5 Nagios
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
- 可利用漏洞
- 代碼執行
- SQLi
- 參考
2.2.6 Zabbix
Zabbix 是一款強大的開源分佈式監控系統, 可以將SNMP
、JMX
、Zabbix Agent
提供的數據經過WEB GUI
的方式進行展現.
- 可利用漏洞(具體參考 ExploitDB):
- 遠程代碼執行
- SQLi
- shell 命令注入
- 認證繞過
- 默認帳戶與密碼,默認口令 admin/zabbix,或者是guest/空
- 參考
2.2.7 Cacit
Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。
- 可利用漏洞
- 任意代碼執行
- SQLi
- 登陸爆破
- 默認密碼admin/admin
- 參考:
2.2.8 Splunk
Splunk Enterprise 能夠從任何來源監控和分析機器數據,以提供操做智能,從而優化您的 IT、安全和業務績效。Splunk Enterprise 具備直觀的分析功能、機器學習、打包應用程序和開放式 API,是一個靈活的平臺,可從重點用例擴展到企業範圍的分析主幹。
- 可利用漏洞
- 信息泄露
- 命令注入
- 服務端請求僞造
- 參考
- ExploitDB 搜索
2.3 常見 Web 應用
還有常見郵件應用、CMS 應用,在搜索引擎上查找對應的漏洞,利用已知漏洞進行攻擊。
2.3.1 郵件系統
一部分是使用騰訊企業郵箱、阿里企業郵箱的,很難有可利用的漏洞,另一種是能獨立部署的郵件系統,政企經常使用的郵箱應用:
- Coremail
- 億郵
- 35互聯
- TurboMail
- Exchange
- IBM Lotus
2.3.2 CMS 應用
2.4 數據庫/緩存/消息服務
2.4.1 MySQL數據庫
- 默認端口:3306
- 攻擊方法:
- 爆破:弱口令
- 身份認證漏洞:CVE-2012-2122
- 拒絕服務攻擊
- Phpmyadmin萬能密碼繞過:用戶名:‘localhost’@’@」 密碼任意
- 提權
- 參考:
2.4.2 MSSQL數據庫
- 默認端口:1433(Server 數據庫服務)、1434(Monitor 數據庫監控)
- 攻擊方法:
- 爆破:弱口令/使用系統用戶
- 注入
- 參考:
2.4.3 Oracle數據庫
- 默認端口:1521(數據庫端口)、1158(Oracle EMCTL端口)、8080(Oracle XDB數據庫)、210(Oracle XDB FTP服務)
- 攻擊方法:
- 爆破:弱口令
- 注入攻擊;
- 漏洞攻擊;
-參考: - https://www.leiphone.com/news/201711/JjzXFp46zEPMvJod.html
2.4.4 PostgreSQL數據庫
PostgreSQL是一種特性很是齊全的自由軟件的對象–關係型數據庫管理系統,能夠說是目前世界上最早進,功能最強大的自由數據庫管理系統。包括kali系統中msf也使用這個數據庫;淺談postgresql數據庫攻擊技術 大部分關於它的攻擊依舊是sql注入,因此注入纔是數據庫不變的話題。
- 默認端口:5432
- 攻擊方法:
- 爆破:弱口令:postgres postgres
- 緩衝區溢出:CVE-2014-2669
- 參考:
2.4.5 MongoDB數據庫
MongoDB,NoSQL數據庫;攻擊方法與其餘數據庫相似》
- 默認端口:27017
- 攻擊方法:
- 爆破:弱口令
- 未受權訪問;github有攻擊代碼;請點擊
- 參考:
2.4.6 Redis數據庫
Redis是一個開源的使用c語言寫的,支持網絡、可基於內存亦可持久化的日誌型、key-value數據庫。關於這個數據庫這兩年仍是很火的,暴露出來的問題也不少。特別是前段時間暴露的未受權訪問。
- 攻擊方法:
- 爆破:弱口令
- 未受權訪問+配合ssh key提權;
- 參考:
2.4.7 SysBase數據庫
- 默認端口:服務端口5000;監聽端口4100;備份端口:4200
- 攻擊方法:
- 爆破:弱口令
- 命令注入:
- 參考
2.4.8 DB2 數據庫
- 默認端口:5000
- 攻擊方法:
- 安全限制繞過:成功後可執行未受權操做(CVE-2015-1922)
- 參考:
2.5 常見服務/協議
2.5.1 FTP 服務
FTP服務:ftp服務我分爲兩種狀況,第一種是使用系統軟件來配置,好比IIS中的FTP文件共享或Linux中的默認服務軟件;第二種是經過第三方軟件來配置,好比Serv-U還有一些網上寫的簡易ftp服務器等;
默認端口:20(數據端口);21(控制端口);69(tftp小型文件傳輸協議)
- 攻擊方式:
- 爆破:ftp的爆破工具備不少,這裏我推薦owasp的Bruter 以及msf中ftp爆破模塊;
- 匿名訪問:用戶名:anonymous 密碼:爲空或任意郵箱
- 嗅探:ftp使用明文傳輸技術(可是嗅探給予局域網並須要欺騙或監聽網關)
- 後門 vsftp
- 遠程溢出
- 跳轉攻擊
2.5.2 NFS 服務
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件同樣。現在NFS具有了防止被利用導出文件夾的功能,但遺留系統中的NFS服務配置不當,則仍可能遭到惡意攻擊者的利用。
2.5.3 Samba服務
Samba是linux和unix系統上實現SMB/CIFS協議的一個免費軟件,由服務器和客戶端程序構成。而SMB是局域網支持共享文件和打印機的一種通訊協議,爲局域網內不一樣計算機之間提供文件及打印機等資源的共享服務。
- 攻擊方法
- 遠程代碼執行
- 弱口令
- 未受權訪問(public)
- 參考
2.5.4 SSH 服務
SSH 是協議,一般使用 OpenSSH 軟件實現協議應用。SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡工做小組(Network Working Group)所制定;SSH 爲創建在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其它網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。
- 端口:22
- 攻擊方法:
- 爆破
- 後門
- 漏洞:28退格漏洞、OpenSSL漏洞
- 參考
2.5.5 Telnet 服務
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工做的能力。在終端使用者的電腦上使用telnet程序,用它鏈接到服務器。終端使用者能夠在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制檯上輸入同樣。能夠在本地就能控制服務器。
- 默認端口:21
- 攻擊方法:
- 爆破
- 嗅探
2.5.6 Windows 遠程鏈接
- 默認端口:3389
- 攻擊方法
- 爆破
- Shift粘滯鍵後門:5次shift後門
- 利用ms12-020攻擊3389端口
2.5.7 VNC服務
VNC(Virtual Network Computing),爲一種使用RFB協議的顯示屏畫面分享及遠程操做軟件。此軟件藉由網絡,可發送鍵盤與鼠標的動做及即時的顯示屏畫面。
- 默認端口:5900+桌面ID(5901;5902)
- 攻擊方式:
- 爆破:弱口令
- 認證口令繞過:
- 拒絕服務攻擊:(CVE-2015-5239)
- 權限提高:(CVE-2013-6886)
2.5.8 SMTP協議
smtp:郵件協議,在linux中默認開啓這個服務,能夠向對方發送釣魚郵件!
- 默認端口:25(smtp)、465(smtps)
- 攻擊方式:
- 爆破:弱口令
- 未受權訪問
2.5.9 POP3協議
- 默認端口:109(POP2)、110(POP3)、995(POP3S)
- 攻擊方式:
- 爆破;弱口令
- 未受權訪問;
2.5.10 DNS服務
- 默認端口:53
- 攻擊方式:
- 區域傳輸漏洞
2.5.11 IMAP協議
- 默認端口:143(imap)、993(imaps)
- 攻擊方式:
- 爆破:弱口令
- 配置不當
2.5.12 SNMP協議
- 默認端口:161
- 攻擊方式:
- 爆破:弱口令
2.5.13 DHCP服務
- 默認端口:67&6八、546(DHCP Failover作雙機熱備的)
- 攻擊方式:
- DHCP劫持;
2.6 雲環境
2.6.1 VMware
使用 VMware vCloud 可將現有數據中心內的虛擬基礎架構資源池化,並將其做爲基於目錄的服務交付。經過與雲計算基礎架構的最佳平臺 VMware vSphere 配合使用,VMware vCloud Director 可爲客戶提供構建安全的私有云,從而改變 IT 部門交付和管理基礎架構服務以及用戶訪問和使用這些服務的方式。
通常組織中不少獨立安裝的 Esxi 形式的私有云,或獨立部署的虛擬化系統。
- 端口(不少):
- 漏洞
- 主機逃逸
- CVE-2017-5638
- 參考:
- https://paper.seebug.org/348/
- http://www.freebuf.com/articles/system/141179.html
- http://www.mottoin.com/100651.html
- http://www.52bug.cn/%E9%BB%91%E5%AE%A2%E6%8A%80%E6%9C%AF/4375.html
- https://twitter.com/VMwareSRC
- https://loudong.sjtu.edu.cn/?keyword=vmware&serverity=%E9%AB%98%E5%8D%B1&page=1
- https://www.vmware.com/cn/security/hardening-guides.html
2.6.2 OpenStack
OpenStack是基礎設施即服務(IaaS)軟件,讓任何人均可以自行建立和提供雲計算服務。此外,OpenStack也用做建立防火牆內的「私有云」(Private Cloud),提供機構或企業內各部門共享資源。
- 漏洞,有漏洞可是POC基本沒有。檢查時候能夠參考安全的配置實踐。
- 權限繞過漏洞
- 信息泄露
- 代碼執行漏洞
- 參考:
2.6.3 Docker
Docker是一個開放源代碼軟件項目,讓應用程序佈署在軟件容器下的工做能夠自動化進行,藉此在Linux操做系統上,提供一個額外的軟件抽象層,以及操做系統層虛擬化的自動管理機制[1]。Docker利用Linux核心中的資源分脫機制,例如cgroups,以及Linux核心名字空間(name space),來建立獨立的軟件容器(containers)。這能夠在單一Linux實體下運做,避免引導一個虛擬機形成的額外負擔。Linux核心對名字空間的支持徹底隔離了工做環境中應用程序的視野,包括進程樹、網絡、用戶ID與掛載文件系統,而核心的cgroup提供資源隔離,包括CPU、內存、block I/O與網絡。從0.9版本起,Dockers在使用抽象虛擬是經由libvirt的LXC與systemd - nspawn提供界面的基礎上,開始包括libcontainer函數庫作爲以本身的方式開始直接使用由Linux核心提供的虛擬化的設施。
-
安全問題(不多有漏洞的POC,安全檢查也是基於最佳實踐和官方安全建議進行):
- 內核漏洞(Kernel exploits) 容器是基於內核的虛擬化,主機(host)和主機上的全部容器共享一套內核。若是某個容器的操做形成了內核崩潰,那麼反過來整臺機器上的容器都會受到影響。
- CVE-2015-3630 1.6.0 Docker Libcontainer 安全繞過漏洞
- CVE-2015-3627 1.6.1 Libcontainer和Docker Engine 權限許可和訪問控制漏洞
- CVE-2015-3630 1.6.1 Docker Engine 安全繞過漏洞
- CVE-2014-9358 1.3.3 Docker 目錄遍歷漏洞
- CVE-2014-9357 1.3.2 Docker 權限許可和訪問控制漏洞
- CVE-2014-6408 1.3.1 Docker 權限許可和訪問控制漏洞
- CVE-2014-5277 1.3.0 Docker和docker-py 代碼注入漏洞
- 拒絕服務攻擊(Denial-of-service attacks) 全部的容器都共享了內核資源,若是一個容器獨佔了某一個資源(內存、CPU、各類ID),可能會形成其餘容器由於資源匱乏沒法工做(造成DoS攻擊)。
- 容器突破(Container breakouts) Linux的namespace機制是容器的核心之一,它容許容器內部擁有一個PID=1的進程而在容器外部這個進程號又是不同的(好比1234)。如今問題在於若是一個PID=1的進程突破了namespace的限制,那麼他將會在主機上得到root權限。
- 有毒鏡像(Poisoned images) 主要是考慮到鏡像自己的安全性,沒太多好說的。
- 內核漏洞(Kernel exploits) 容器是基於內核的虛擬化,主機(host)和主機上的全部容器共享一套內核。若是某個容器的操做形成了內核崩潰,那麼反過來整臺機器上的容器都會受到影響。
-
參考:
- https://toutiao.io/posts/2y9xx8/preview
- http://www.yunweipai.com/archives/21610.html
- http://www.91ri.org/15837.html
- https://blog.csdn.net/ruidu_doer/article/details/53401523
- https://loudong.sjtu.edu.cn/?keyword=docker&serverity=%E9%AB%98%E5%8D%B1
- http://dockone.io/article/150
- http://www.dockerinfo.net/docker/docker%E5%AE%89%E5%85%A8
- https://blog.waterstrong.me/docker-security/
2.7 大數據
2.7.1 Elsaticsearch
Elasticsearch 是一個分佈式的搜索和分析引擎,能夠用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,如今是使用最廣的開源搜索引擎之一,Wikipedia、Stack Overflow、GitHub 等都基於 Elasticsearch 來構建他們的搜索引擎。
- 默認端口:9200()、9300()
- 攻擊方法:
- 未受權訪問;
- 遠程命令執行;
- 文件遍歷;
- 低版本webshell植入;
- 參考
2.7.2 hadoop
Hadoop是一個開源的框架,可編寫和運行分佈式應用處理大規模數據,是專爲離線和大規模數據分析而設計的,並不適合那種對幾個記錄隨機讀寫的在線事務處理模式。Hadoop=HDFS(文件系統,數據存儲技術相關)+ Mapreduce(數據處理),Hadoop的數據來源能夠是任何形式,在處理半結構化和非結構化數據上與關係型數據庫相比有更好的性能,具備更靈活的處理能力,無論任何數據形式最終會轉化爲key/value,key/value是基本數據單元。用函數式變成Mapreduce代替SQL,SQL是查詢語句,而Mapreduce則是使用腳本和代碼,而對於適用於關係型數據庫,習慣SQL的Hadoop有開源工具hive代替。 Hadoop就是一個分佈式計算的解決方案。
參考:
- https://tech.meituan.com/hadoop-security-practice.html
- https://zhuanlan.zhihu.com/p/33525241
- https://www.anquanke.com/post/id/85343
- https://www.cloudera.com/documentation/cdh/5-0-x/CDH5-Security-Guide/cdh5sg_hadoop_security_intro.html
2.7.3 Hive
Hive是Hadoop家族中一款數據倉庫產品,Hive最大的特色就是提供了類SQL的語法,封裝了底層的MapReduce過程,讓有SQL基礎的業務人員,也能夠直接利用Hadoop進行大數據的操做。
參考:
- https://cwiki.apache.org/confluence/display/Hive/Security
- http://www.javashuo.com/article/p-zshephnf-o.html
2.7.4 Sqoop
Apache Sqoop(SQL-to-Hadoop) 項目旨在協助 RDBMS 與 Hadoop 之間進行高效的大數據交流。用戶能夠在 Sqoop 的幫助下,輕鬆地把關係型數據庫的數據導入到 Hadoop 與其相關的系統 (如HBase和Hive)中;同時也能夠把數據從 Hadoop 系統裏抽取並導出到關係型數據庫裏。除了這些主要的功能外,Sqoop 也提供了一些諸如查看數據庫表等實用的小工具。
參考
2.7.5 HBase
HBase創建在HDFS之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的數據庫系統。它介於NoSQL和RDBMS之間,僅能經過行鍵(row key)和行鍵序列來檢索數據,僅支持單行事務(可經過Hive支持來實現多表聯合等複雜操做)。主要用來存儲非結構化和半結構化的鬆散數據。與Hadoop同樣,HBase目標主要依靠橫向擴展,經過不斷增長廉價的商用服務器,來增長計算和存儲能力。
參考:
- https://www.cloudera.com/documentation/enterprise/5-6-x/topics/admin_hbase_security.html
- http://www.cloudera.com/documentation/cdh/5-1-x/CDH5-Security-Guide/cdh5sg_hbase_security.html
2.7.6 Spark
Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行計算框架,Spark基於map reduce算法實現的分佈式計算,擁有Hadoop MapReduce所具備的優勢;但不一樣於MapReduce的是Job中間輸出和結果能夠保存在內存中,從而再也不須要讀寫HDFS。
參考:
3 後滲透
3.1 提權
SecWiki 總結了:
3.2 域攻擊
一般域內滲透的過程
- 肯定目標系統和應用程序
- 識別潛在的漏洞
- 利用漏洞得到初始訪問
- 提高權限
- 定位域管理進程或者獲取遠程系統上的本地身份驗證令牌
- 經過本地管理員的密碼Hash,破解密碼,使用mimikatz工具抓取密碼驗證運行在遠程系統上的域名管理進程
- 遷移域管理進程
- 建立一個域管理員
假設到這裏已經從外網或內網利用漏洞入侵到到一臺服務器,而且經過提權獲取了主機管理員權限,接下來要作的工做是獲取域管理員權限,並找到敏感數據。
一般會使用到的工具:
- Empire
- PowerUp
- PowerView
通常熟練使用一種就夠用了,以 Empire 爲例:
Empire 和 Metasploit 的使用原理是同樣的,都是先設置一個監聽,而後去生成一個木馬,而後在目標主機運行該木馬,咱們的監聽就會鏈接上反彈回來的代理。
參考:
域滲透另一個工具 mimikatz,用於抓 Windows 密碼,使用參考:
3.3 創建後門/端口轉發
參考:
- http://www.zerokeeper.com/experience/network-port-forwarding-and-penetration.html
- https://1sparrow.com/2018/01/20/%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E6%80%BB%E7%BB%93/
- http://drops.xmd5.com/static/drops/tools-15000.html
端口轉發及代理類工具
- LCX:windows下面的端口轉發軟件。
- sockscap:主要針對windows平臺的端口轉發和代理轉發。
- proxifier:跨平臺的端口轉發和代理工具,適用windows,linux,
Macos平臺,代理轉發利器 - Rsscoks:*nix平臺下的端口轉發和代理工具,配合proxychains好用
到不行。 - Proxychains:*nix平臺下老牌的socks代理工具,通常的系統都會自
帶,誰用誰知道。 - ssh proxy:經過ssh作端口代理和轉發,通常*nix系統都自帶。
- netcat:socat,hping,在不少狀況下能夠作端口轉發和數據代理轉
發。 - metasploit:metasploit的後滲透模塊中有很多代理模塊和端口轉發
模塊。
在中轉服務器上下載端口轉發工具(加密壓縮):
- 能鏈接互聯網下載
- 經過 mstsc 的磁盤加載
- 經過入口服務器中轉
- 經過遠程控制軟件上傳
3.4 傳輸文件
3.4.1 文件打包
關於打包
- Rar文件打包,壓縮d:\data\目錄下全部2013-01-01後修改的doc文件,100M/包密碼爲Pass,-x爲排除選項
rar.exe a–r –v100m new.rar –ta20130101000000 –hpPass –n*.doc –x*.exe d:\data\
- 7z加密,壓縮d:\data下全部文件,密碼爲Pass,分卷100M/包
7z.exe a c:\xx.7z -pPass -mhe d:\data -v100m
- Linux用 tar 打包文件是能夠加密碼,要跟openssl結合使用。
tar -zcvf - pma|openssl des3 -salt -k password | dd of=pma.des3
- 使用 tar 對加密文件解壓:
dd if=pma.des3 |openssl des3 -d -k password|tar zxf -
### 3.4.2 文件傳輸
幾個思路
- 使用 tar 對加密文件解壓:
- 使用端口轉發直接傳送數據;
- 搭建 FTP、HTTP 協議;
- 上傳到雲端再下載;
3.5 製做後門/木馬程序
通常用Matisploit 的 msfvenom,使用參考:
- https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom
- https://www.offensive-security.com/metasploit-unleashed/msfvenom/
SET 也能夠生成後門程序,另外也能夠關注一下最新的 Office、PDF 的漏洞
4 日誌清理
這部分對於安全檢查、或受權滲透測試工做不是重點,一般也不考慮。
在作日誌清理前須要瞭解如下的內容:
- 攻擊和入侵很難徹底刪除痕跡,沒有日誌記錄自己就是一種入侵特徵;
- 刪除或清理入侵系統的本地日誌不表明刪除了痕跡,在網絡設備、安全設備、集中化日誌系統上仍然留存記錄;
- 留存的後門自己會有攻擊者的信息;
- 使用的代理或跳板可能會被反向入侵;
- 在操做前檢查是否有管理員登陸;
- 刪除上傳的工具,使用磁盤覆寫的功能刪除;
Windows日誌類型
- web日誌:IIS、Apache以及其它web日誌
- 操做日誌:3389登陸列表、最近訪問文件、IE等瀏覽
器訪問日誌、文件訪問日誌 - 登錄日誌:系統應用日誌-安全日誌等
- 攻擊前和狀態還原,儘可能保持一致
Linux操做日誌
- Linux歷史操做
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
- SSHD登錄記錄
刪除~/.ssh/known_hosts中記錄 - 修改文件時間戳
touch –r 原文件要修改文件 - 刪除臨時使用文件,尤爲是tmp目錄
- logtamper
5 工具和其餘
-
內網使用工具滲透的一些原則
- 使用適合本身的工具,工具不必收集太多,夠用就行;
- 能根據實際狀況編寫適用的工具;
- 不能確保安全的工具均要在虛擬機中運行(很
多捆綁病毒木馬); - 作安全檢查的話,儘可能使用 GitHub 上開源的工具。
-
工具介紹
我的習慣使用 kali 自帶工具,特定 POC 先從 Github 上搜索。
推薦一個工具介紹的網站:https://www.kitploit.com/ -
滲透注意事項
- 檢查內網監控防範系統
- 謹慎使用ARP軟件和大面積掃描軟件
- 使用目標網絡中無空閒機器,做爲打包對象
- 使用內網大流量機器做爲傳輸對象,如wsus服務
器、視頻會議系統 - 使用臨時機器打包、數據傳輸,不要使用已控機器,可利用wmi腳本或wmic遠程操做
滲透注意事項 - 禁止使用psexec.exe
- 打包時避開用戶工做時間
- 控制捲包大小<100M
- 選擇用戶經常使用壓縮軟件
- 錯峯下載數據
- 控制傳輸流量
- 清除全部操做日誌
- 登陸主機前先看看管理員是否在
感謝大佬們的總結
- http://www.91ri.org/15441.html
- https://paper.seebug.org/126/
- https://paper.seebug.org/409/
- DC010 上海站 演講ppt《5內網滲透思路(陳小兵).pdf》