1. 内網安全檢查/滲透介紹
1.1 攻擊思路
有2種思路:
- 攻擊外網伺服器,擷取外網伺服器的權限,接着利用入侵成功的外網伺服器作為跳闆,攻擊内網其他伺服器,最後獲得敏感資料,并将資料傳遞到攻擊者,看情況安裝長期後門,實作長期控制和獲得敏感資料的方式;
- 攻擊辦公網的系統、辦公網電腦、辦公網無線等方式,一般是采用社工,實作控制辦公電腦,再用獲得的辦公網資料,可能是内網的各種登入賬号和密碼,再擷取辦公網或者生産網的有用資料。
一般内網安全檢查使用第一種思路,實際的攻擊2種思路結合實作。
1.2 敏感資料/資料/資訊
- 高管/系統管理者/财務/人事/業務人員的個人電腦
- 檔案伺服器/共享伺服器
- 郵件伺服器
- OA伺服器
- 資料庫伺服器
1.3 攻擊過程
按照第一種思路,個人認為可以分為4個階段:
- 資訊收集
- 漏洞驗證/漏洞攻擊
- 後滲透
- 日志清理
第二種思路,社工的比重更大一些,本篇不多做介紹。
2 資訊收集
該階段識别内網存活的主機 IP, 運作端口掃描和漏洞掃描擷取可以利用的漏洞
2.1 主機發現
使用端口掃描工具可以實作主機發現的功能,但也有些動作小的主機發現工具(Kali),可以有效的發現存活主機。自己寫個 ping 的循環腳本也可以。
不受限的測試直接端口掃描了。
2.2 端口掃描
有授權的情況下直接使用 nmap 、masscan 等端口掃描工具直接擷取開放的端口資訊。
作為跳闆機可以使用 Metasploit 做端口掃描,也可以在跳闆主機上上傳端口掃描工具,使用工具掃描。
入侵到伺服器上也可以根據伺服器的環境使用自定義的端口掃描腳本掃描端口。
python 3 的端口掃描腳本
# This script runs on Python 3import socket, threadingdef 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 後門檔案
- 遠端代碼執行漏洞
- 參考:
- https://paper.seebug.org/399/
- http://www.freebuf.com/column/159200.html
- http://liehu.tass.com.cn/archives/836
- http://www.mottoin.com/87173.html
2. Jboss
是一個運作EJB的J2EE應用伺服器。它是開放源代碼的項目,遵循最新的J2EE規範。從JBoss項目開始至今,它已經從一個EJB容器發展成為一個基于的 J2EE 的一個Web 作業系統(operating system for web),它展現了 J2EE 規範中最新的技術。
- 端口:8080
- 弱密碼,爆破
- 管理背景部署 war 後門
- 反序列化
- 遠端代碼執行
- http://www.vuln.cn/6300
- http://mobile.www.cnblogs.com/Safe3/archive/2010/01/08/1642371.html
- https://www.zybuluo.com/websec007/note/838374
- https://blog.csdn.net/u011215939/article/details/79141624
3. WebLogic
WebLogic是美國Oracle公司出品的一個Application Server,确切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、內建、部署和管理大型分布式Web應用、網絡應用和資料庫應用的Java應用伺服器。将Java的動态功能和Java Enterprise标準的安全性引入大型網絡應用的開發、內建、部署和管理之中。
- 端口:7001,7002
- 弱密碼、爆破,弱密碼一般為weblogic/Oracle@123 or weblogic
- SSRF
- 反序列化漏洞
- weblogic_uac
- https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf
- https://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cve-2014-4.html
- https://fuping.site/2017/06/05/Weblogic-Vulnerability-Verification/
- https://bbs.pediy.com/thread-224954.htm
4. WebSphere
IBM公司一套典型的電子商務應用開發工具及運作環境。
- 端口:預設端口:908*;第一個應用就是9080,第二個就是9081;控制台9090
- 控制台登入爆破
- 很多内網 websphere 的控制台存在弱密碼 / 預設密碼,可以使用 admin/admin 以及 webshpere/webshpere 這種密碼登入。 通過該密碼登入控制台後,可以部署 war 包,進而擷取到 WEBSHELL 。
- 任意檔案洩露
- https://loudong.sjtu.edu.cn/?keyword=WebSphere&serverity=%E9%AB%98%E5%8D%B1
- http://www.fr1sh.com/wooyun_1/bug_detail.php?wybug_id=wooyun-2013-036803
- https://gist.github.com/metall0id/bb3e9bab2b7caee90cb7
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
- https://github.com/hktalent/myhktools
- https://github.com/Lucifer1993/struts-scan
- 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提供了一個簡易的開發方式,這種開發方式,将避免那些可能緻使底層代碼變得繁雜混亂的大量的屬性檔案和幫助類。
- CVE-2010-1622
- CVE-2018-1274
- CVE-2018-1270
- CVE-2018-1273
- 目錄穿越
- 參考
- http://www.inbreak.net/archives/377
- https://www.secpulse.com/archives/71762.html
- http://www.open-open.com/news/view/1225d07
- https://xz.aliyun.com/t/2261
- https://xz.aliyun.com/t/2252
2.1.4 Web 伺服器
- IIS:Windows 的 WWW 伺服器
- https://masterxsec.github.io/2017/06/07/IIS-write-%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/
- http://www.freebuf.com/articles/4908.html
- https://www.anquanke.com/post/id/85811
- IIS,開啟了 WebDAV,可以直接詳伺服器 PUT 檔案
- 短檔案名枚舉漏洞
- 提權漏洞
- 解析漏洞
- 端口:80
- Apache
- 目錄周遊
- Nginx
- https://www.seebug.org/vuldb/ssvid-92538
- CVE-2016-1247:需要擷取主機操作權限,攻擊者可通過軟連結任意檔案來替換日志檔案,進而實作提權以擷取伺服器的root權限。
- lighttpd
2.2 常見運維系統
一般分自動化部署和運維監控相關的的工具。漏洞可以通過搜尋引擎搜尋,github搜尋,ExploitDB搜尋,官網上的安全通告擷取。
内網的通用類應用比較常見的問題是弱密碼,如果一個管理者可以登入幾個系統,那在這幾個系統的賬号、密碼也基本上是一樣的。
2.2.1 Gitlab
GitLab是一個利用 Ruby on Rails 開發的開源應用程式,實作一個自托管的項目倉庫,可通過Web界面進行通路公開的或者私人項目。
- 可利用漏洞:
- 任意檔案讀取漏洞
- 意使用者 token 洩露漏洞
- 指令執行漏洞
- http://blog.knownsec.com/2016/11/gitlab-file-read-vulnerability-cve-2016-9086-and-access-all-user-authentication-token/
- http://rinige.com/index.php/archives/577/
2.2.2 Jenkins
Jenkins是一種跨平台的持續內建和傳遞的應用軟體,它便于不斷穩定地傳遞新的軟體版本,并提高你的工作效率。這款開發運維工具還讓開發人員更容易把項目的變化整合起來,并使用大量的測試和部署技術。
- 未授權通路漏洞
- 登入入口爆破
- https://www.cnblogs.com/backlion/p/6813260.html
- https://www.anquanke.com/post/id/86018
- https://paper.seebug.org/199/
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
- http://www.bugku.com/thread-87-1-1.html
- http://www.mottoin.com/93936.html
2.2.6 Zabbix
Zabbix 是一款強大的開源分布式監控系統, 能夠将
SNMP
、
JMX
Zabbix Agent
提供的資料通過
WEB GUI
的方式進行展示.
- 可利用漏洞(具體參考 ExploitDB):
- shell 指令注入
- 認證繞過
- 預設賬戶與密碼,預設密碼 admin/zabbix,或者是guest/空
- https://blog.csdn.net/ytuo1223/article/details/45937981
- http://vinc.top/2017/04/18/zabbix%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/
- http://www.mottoin.com/87570.html
2.2.7 Cacit
Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。
- 任意代碼執行
- 登入爆破
- 預設密碼admin/admin
- http://wooyun.jozxing.cc/static/bugs/wooyun-2011-02674.html
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’@’@” 密碼任意
- 提權
- https://www.seebug.org/appdir/MySQL
- http://www.waitalone.cn/mysql-tiquan-summary.html?replytocom=390
- https://xz.aliyun.com/t/1491
2.4.2 MSSQL資料庫
- 預設端口:1433(Server 資料庫服務)、1434(Monitor 資料庫監控)
- 爆破:弱密碼/使用系統使用者
- 注入
- https://www.anquanke.com/post/id/86011
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
- http://drops.xmd5.com/static/drops/tips-6449.html
- https://www.secpulse.com/archives/69153.html
2.4.5 MongoDB資料庫
MongoDB,NoSQL資料庫;攻擊方法與其他資料庫類似》
- 預設端口:27017
- 未授權通路;github有攻擊代碼;請點選
- http://www.cnblogs.com/LittleHann/p/6252421.html
- http://www.tiejiang.org/19157.html
2.4.6 Redis資料庫
Redis是一個開源的使用c語言寫的,支援網絡、可基于記憶體亦可持久化的日志型、key-value資料庫。關于這個資料庫這兩年還是很火的,暴露出來的問題也很多。特别是前段時間暴露的未授權通路。
- 未授權通路+配合ssh key提權;
- http://www.alloyteam.com/2017/07/12910/
2.4.7 SysBase資料庫
- 預設端口:服務端口5000;監聽端口4100;備份端口:4200
- 指令注入:
2.4.8 DB2 資料庫
- 預設端口:5000
- 安全限制繞過:成功後可執行未授權操作(CVE-2015-1922)
- http://23.94.222.93/bug_detail.php?wybug_id=wooyun-2015-0113071
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服務配置不當,則仍可能遭到惡意攻擊者的利用。
- 攻擊方法
- 未授權通路
- http://www.freebuf.com/articles/network/159468.html
- http://www.vuln.cn/6368
2.5.3 Samba服務
Samba是linux和unix系統上實作SMB/CIFS協定的一個免費軟體,由伺服器和用戶端程式構成。而SMB是區域網路支援共享檔案和列印機的一種通信協定,為區域網路内不同計算機之間提供檔案及列印機等資源的共享服務。
- 弱密碼
- 未授權通路(public)
- http://www.91ri.org/17114.html
2.5.4 SSH 服務
SSH 是協定,通常使用 OpenSSH 軟體實作協定應用。SSH 為 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協定。SSH 是目前較可靠,專為遠端登入會話和其它網絡服務提供安全性的協定。利用 SSH 協定可以有效防止遠端管理過程中的資訊洩露問題。
- 端口:22
- 爆破
- 後門
- 漏洞:28倒退漏洞、OpenSSL漏洞
- https://cloud.tencent.com/developer/article/1078187
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&68、546(DHCP Failover做雙機熱備的)
- DHCP劫持;
2.6 雲環境
2.6.1 VMware
使用 VMware vCloud 可将現有資料中心内的虛拟基礎架構資源池化,并将其作為基于目錄的服務傳遞。通過與雲計算基礎架構的最佳平台 VMware vSphere 配合使用,VMware vCloud Director 可為客戶提供建構安全的私有雲,進而改變 IT 部門傳遞和管理基礎架構服務以及使用者通路和使用這些服務的方式。
一般組織中很多獨立安裝的 Esxi 形式的私有雲,或獨立部署的虛拟化系統。
- 端口(很多):
- https://kb.vmware.com/s/article/2115330
- https://kb.vmware.com/s/article/2081930
- 漏洞
- 主機逃逸
- 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基本沒有。檢查時候可以參考安全的配置實踐。
- 權限繞過漏洞
- 代碼執行漏洞
- https://loudong.sjtu.edu.cn/?keyword=openstack&serverity=%E9%AB%98%E5%8D%B1
- https://docs.openstack.org/liberty/zh_CN/install-guide-obs/environment-security.html
- http://www.freebuf.com/news/topnews/107203.html
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,安全檢查也是基于最佳實踐和官方安全建議進行):
- 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 代碼注入漏洞
- 核心漏洞(Kernel exploits) 容器是基于核心的虛拟化,主機(host)和主機上的所有容器共享一套核心。如果某個容器的操作造成了核心崩潰,那麼反過來整台機器上的容器都會受到影響。
- 拒絕服務攻擊(Denial-of-service attacks) 所有的容器都共享了核心資源,如果一個容器獨占了某一個資源(記憶體、CPU、各種ID),可能會造成其他容器因為資源匮乏無法工作(形成DoS攻擊)。
- 容器突破(Container breakouts) Linux的namespace機制是容器的核心之一,它允許容器内部擁有一個PID=1的程序而在容器外部這個程序号又是不一樣的(比如1234)。現在問題在于如果一個PID=1的程序突破了namespace的限制,那麼他将會在主機上獲得root權限。
- 有毒鏡像(Poisoned images) 主要是考慮到鏡像本身的安全性,沒太多好說的。
- 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植入;
- http://www.freebuf.com/sectool/38025.html
- https://www.secpulse.com/archives/5401.html
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
- https://www.cnblogs.com/yejibigdata/p/6394719.html
2.7.4 Sqoop
Apache Sqoop(SQL-to-Hadoop) 項目旨在協助 RDBMS 與 Hadoop 之間進行高效的大資料交流。使用者可以在 Sqoop 的幫助下,輕松地把關系型資料庫的資料導入到 Hadoop 與其相關的系統 (如HBase和Hive)中;同時也可以把資料從 Hadoop 系統裡抽取并導出到關系型資料庫裡。除了這些主要的功能外,Sqoop 也提供了一些諸如檢視資料庫表等實用的小工具。
- https://sqoop.apache.org/docs/1.99.7/security.html
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。
- http://cwiki.apachecn.org/pages/viewpage.action?pageId=2887905
3 後滲透
3.1 提權
SecWiki 總結了:
- https://github.com/SecWiki/windows-kernel-exploits
- https://github.com/SecWiki/linux-kernel-exploits
3.2 域攻擊
通常域内滲透的過程
- 确定目标系統和應用程式
- 識别潛在的漏洞
- 利用漏洞獲得初始通路
- 提升權限
- 定位域管理程序或者擷取遠端系統上的本地身份驗證令牌
- 通過本地管理者的密碼Hash,破解密碼,使用mimikatz工具抓取密碼驗證運作在遠端系統上的域名管理程序
- 遷移域管理程序
- 建立一個域管理者
假設到這裡已經從外網或内網利用漏洞入侵到到一台伺服器,并且通過提權擷取了主機管理者權限,接下來要做的工作是擷取域管理者權限,并找到敏感資料。
通常會使用到的工具:
- Empire
- PowerUp
- PowerView
一般熟練使用一種就夠用了,以 Empire 為例:
Empire 和 Metasploit 的使用原理是一樣的,都是先設定一個監聽,然後去生成一個木馬,然後在目标主機運作該木馬,我們的監聽就會連接配接上反彈回來的代理。
- https://www.anquanke.com/post/id/87328
- http://www.4hou.com/technology/4704.html
域滲透另外一個工具 mimikatz,用于抓 Windows 密碼,使用參考:
- http://www.mottoin.com/98506.html
- https://zhuanlan.zhihu.com/p/34991269
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 檔案傳輸
幾個思路
- 使用端口轉發直接傳送資料;
- 搭建 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/
内容來源:先知社群 白河愁