指南:用 Docker 搭建沙箱環(huán)境并完成首次用戶(hù)注冊(cè)(Tutorial 0))
網(wǎng)絡(luò)安全應(yīng)用安全【免費(fèi)下載鏈接】monkeyInfection Monkey - An open-source adversary emulation platform項(xiàng)目地址https://gitcode.com/gh_mirrors/mo/monkey點(diǎn)擊查看免費(fèi)下載本文是 Infection Monkey 系列教程的第 0 篇對(duì)應(yīng)倉(cāng)庫(kù)文檔 docs/content/tutorials/first-steps.md目標(biāo)是帶你在一臺(tái) Linux 主機(jī)上用 Docker 快速搭建一個(gè)隔離、可隨意折騰的沙箱實(shí)驗(yàn)環(huán)境一個(gè)包含 Monkey Island 控制端C2、MongoDB 數(shù)據(jù)庫(kù)和一臺(tái)故意留有弱點(diǎn)的目標(biāo)容器。讀完本文你將掌握 Infection Monkey 服務(wù)器環(huán)境的啟動(dòng)/關(guān)閉方法、如何通過(guò)瀏覽器訪(fǎng)問(wèn) Monkey Island Web 界面以及如何完成首次用戶(hù)注冊(cè)并進(jìn)入 Getting Started 引導(dǎo)頁(yè)——這些是繼續(xù)完成后續(xù)Hello, Monkey漏洞利用實(shí)操教程的基礎(chǔ)。說(shuō)明本文基于倉(cāng)庫(kù)中提供的教程鏡像與 docker-compose 編排文件 展開(kāi)。教程環(huán)境為了便于學(xué)習(xí)與探索其配置可能經(jīng)過(guò)特殊定制不適用于生產(chǎn)環(huán)境。若要在真實(shí)環(huán)境中部署官方正式版本請(qǐng)參考倉(cāng)庫(kù)的 Setup 安裝章節(jié)如 Docker 部署文檔。本教程的目標(biāo)與適用場(chǎng)景在開(kāi)始使用 Infection Monkey 之前你需要一個(gè)可以放心搗亂的實(shí)驗(yàn)環(huán)境。官方教程系列約定使用 Docker 搭建的沙箱它的價(jià)值在于完全隔離Monkey 在掃描和利用漏洞時(shí)不會(huì)波及你的真實(shí)網(wǎng)絡(luò)一鍵復(fù)現(xiàn)所有組件控制端、數(shù)據(jù)庫(kù)、靶機(jī)都以容器形式聲明在同一個(gè) docker-compose.yaml 中任何機(jī)器上都能得到一致的結(jié)果即用即棄實(shí)驗(yàn)結(jié)束后執(zhí)行docker compose down即可整體拆除不會(huì)在宿主機(jī)上留下運(yùn)行殘留。后續(xù)的 Tutorial 1: Hello, Monkey配置并實(shí)際利用一個(gè) SSH 弱口令漏洞將完全建立在本教程搭建的環(huán)境之上因此請(qǐng)務(wù)必先完成本教程的環(huán)境準(zhǔn)備與注冊(cè)步驟。前置條件Docker 與 Docker Compose本教程只要求宿主機(jī)安裝兩個(gè)工具dockerdocker-compose或新版 Docker 自帶的docker compose子命令你可以用下面的命令確認(rèn)版本是否可用docker --version docker compose version由于沙箱中的monkey-island容器只支持 Linux詳見(jiàn) Docker 部署文檔本教程適用于 Linux 主機(jī)Windows/macOS 上的 Docker Desktop 不在此教程支持范圍內(nèi)。沙箱環(huán)境的組成三個(gè)容器各司其職運(yùn)行docker compose up后你將得到 3 個(gè)容器。它們的角色如下容器名鏡像作用monkey-islandinfectionmonkey/monkey-island:e7c59c79dInfection Monkey 的命令與控制服務(wù)器C2提供 Web 界面與 APImongomongo:6.0MongoDB 數(shù)據(jù)庫(kù)Monkey Island 用它持久化配置、事件與憑證等數(shù)據(jù)helloinfectionmonkey/ssh1一臺(tái)故意配置了弱口令 SSH 服務(wù)的漏洞容器供后續(xù)教程作為攻擊目標(biāo)這三個(gè)服務(wù)在 docker-compose.yaml 中的關(guān)鍵配置如下version: 3 services: mongo: container_name: mongo hostname: mongo image: mongo:6.0 ports: - 27017:27017 volumes: - monkey-tutorial-db:/data/db monkey-island: container_name: monkey-island hostname: monkey-island image: infectionmonkey/monkey-island:e7c59c79d environment: - MONKEY_MONGO_URLmongodb://mongo:27017/monkey_island_test ports: - 5000:5000 depends_on: - mongo hello: container_name: hello hostname: hello image: infectionmonkey/ssh1 command: /usr/sbin/sshd -D sh -c trap : TERM INT; tail -f /dev/null wait volumes: monkey-tutorial-db:幾個(gè)值得注意的細(xì)節(jié)MONKEY_MONGO_URL環(huán)境變量決定了 Monkey Island 連接哪個(gè) MongoDB。這里指向同網(wǎng)絡(luò)的mongo容器mongodb://mongo:27017/monkey_island_test數(shù)據(jù)庫(kù)名為monkey_island_test教程專(zhuān)用。從源碼 monkey/monkey_island/cc/mongo_consts.py 可以看到Monkey Island 默認(rèn)讀取該環(huán)境變量未設(shè)置時(shí)才回退到mongodb://localhost:27017/monkey_island——這正是本教程用環(huán)境變量覆蓋默認(rèn)連接的原因。端口映射monkey-island把 HTTPS 端口 5000 暴露給宿主機(jī)https://localhost:5000mongo暴露 27017 便于調(diào)試。命名卷monkey-tutorial-dbMongoDB 的數(shù)據(jù)目錄/data/db掛載到命名卷上即使執(zhí)行docker compose down后再次啟動(dòng)數(shù)據(jù)仍會(huì)保留。depends_on: mongo保證 Monkey Island 在 MongoDB 就緒之后才啟動(dòng)避免連接失敗。hello 容器是怎么變?nèi)醯膆ello容器對(duì)應(yīng)的鏡像由倉(cāng)庫(kù)中的 ssh1.dockerfile 構(gòu)建。該 Dockerfile 揭示了它的漏洞來(lái)源基于ubuntu:jammy安裝openssh-server通過(guò)sed顯式開(kāi)啟密碼認(rèn)證PasswordAuthentication yes創(chuàng)建了用戶(hù)名為user、密碼為password的賬戶(hù)openssl passwd -1 password。也就是說(shuō)它是一臺(tái)運(yùn)行著 SSH 服務(wù)、且?guī)в泄_(kāi)弱憑據(jù)user/password的靶機(jī)。這個(gè)憑據(jù)會(huì)在 Tutorial 1: Hello, Monkey 中作為 Infection Monkey 的爆破憑證使用。啟動(dòng)沙箱環(huán)境1. 獲取編排文件下載本教程配套的 docker-compose.yml 到本地目錄wget 倉(cāng)庫(kù)中該文件的地址 -O docker-compose.yml # 或者直接從倉(cāng)庫(kù)頁(yè)面復(fù)制該文件內(nèi)容保存為 docker-compose.yml2. 啟動(dòng)全部容器進(jìn)入存放docker-compose.yml的目錄執(zhí)行docker compose up首次運(yùn)行時(shí) Docker 會(huì)自動(dòng)拉取mongo:6.0、infectionmonkey/monkey-island:e7c59c79d和infectionmonkey/ssh1三個(gè)鏡像然后按依賴(lài)順序啟動(dòng)容器。若想在后臺(tái)運(yùn)行不占用當(dāng)前終端可改用docker compose up -d。3. 驗(yàn)證容器狀態(tài)啟動(dòng)完成后確認(rèn) 3 個(gè)容器都在運(yùn)行docker container ls --format table {{.ID}}\t{{.Names}}\t{{.Status}}正常輸出類(lèi)似CONTAINER ID NAMES STATUS 737b67cc344c monkey-island Up 7 seconds fbd91aacc8ea mongo Up 7 seconds b1c9ac1d3b81 hello Up 7 seconds4. 關(guān)閉沙箱實(shí)驗(yàn)結(jié)束后回到docker-compose.yml所在目錄執(zhí)行以下命令即可整體關(guān)閉并移除容器網(wǎng)絡(luò)命名卷中的數(shù)據(jù)會(huì)保留docker compose down訪(fǎng)問(wèn) Monkey Island Web 界面環(huán)境運(yùn)行起來(lái)后用瀏覽器打開(kāi)https://localhost:5000。首次訪(fǎng)問(wèn)時(shí)瀏覽器通常會(huì)彈出自簽名證書(shū)警告——因?yàn)?Monkey Island 默認(rèn)使用自簽名 SSL 證書(shū)關(guān)于正式環(huán)境如何替換為企業(yè)級(jí)證書(shū)可參考 Docker 部署文檔 中Start Monkey Island with user-provided certificate一節(jié)。警告頁(yè)看起來(lái)類(lèi)似下圖。對(duì)于本教程的沙箱環(huán)境可以放心忽略該警告點(diǎn)擊Advanced然后點(diǎn)擊Proceed to localhost (unsafe)繼續(xù)訪(fǎng)問(wèn)。提示這是 Chrome 等瀏覽器的正常安全機(jī)制。Monkey Island 自帶的默認(rèn)證書(shū)未被系統(tǒng)信任所以瀏覽器會(huì)攔截在隔離的沙箱環(huán)境中可以安全地放行。注冊(cè)你的第一個(gè)用戶(hù)由于這是第一次訪(fǎng)問(wèn)這臺(tái) Monkey Island 實(shí)例系統(tǒng)會(huì)要求你注冊(cè)一個(gè)用戶(hù)。在注冊(cè)界面中填寫(xiě)一個(gè)Username用戶(hù)名填寫(xiě)一個(gè)Password密碼點(diǎn)擊黃色的Lets go!按鈕提交。從源碼看這個(gè)流程由認(rèn)證服務(wù)中的Register資源實(shí)現(xiàn)見(jiàn) monkey/monkey_island/cc/services/authentication_service/flask_resources/register.py后端先檢查needs_registration()Monkey Island 只允許注冊(cè)一個(gè)用戶(hù)若已存在用戶(hù)再次注冊(cè)會(huì)返回 HTTP 409 Conflict然后對(duì)用戶(hù)名與密碼做格式校驗(yàn)非空、符合 flask-security 規(guī)則校驗(yàn)失敗返回 400校驗(yàn)通過(guò)后調(diào)用 flask-security 的register()完成注冊(cè)并在成功時(shí)把認(rèn)證令牌含有效期token_ttl_sec寫(xiě)入響應(yīng)實(shí)現(xiàn)注冊(cè)即登錄。所以注冊(cè)完成后你會(huì)自動(dòng)登錄并直接進(jìn)入Getting Started入門(mén)引導(dǎo)頁(yè)面。Getting Started 頁(yè)面是后續(xù)所有操作的起點(diǎn)主要提供三個(gè)入口Run Monkey使用當(dāng)前配置運(yùn)行 Monkey對(duì)應(yīng)側(cè)邊欄1. Run MonkeyConfigure Monkey編輯攻擊目標(biāo)、添加憑證、選擇漏洞利用模塊Exploiter等對(duì)應(yīng)側(cè)邊欄ConfigurationRead more了解更多項(xiàng)目信息。至此你的 Infection Monkey 沙箱環(huán)境已搭建完畢控制端在線(xiàn)、數(shù)據(jù)庫(kù)就緒、靶機(jī)待命、賬號(hào)已注冊(cè)?;仡櫮銓W(xué)到了什么學(xué)會(huì)了用 Docker 編排文件一鍵創(chuàng)建 Infection Monkey 實(shí)驗(yàn)沙箱Monkey Island MongoDB 漏洞靶機(jī)hello學(xué)會(huì)了用docker container ls驗(yàn)證容器運(yùn)行狀態(tài)、用docker compose down關(guān)閉環(huán)境學(xué)會(huì)了訪(fǎng)問(wèn) Monkey Island Web 界面https://localhost:5000并處理自簽名證書(shū)警告完成了首次用戶(hù)注冊(cè)并了解了其背后的單用戶(hù)約束與注冊(cè)即登錄機(jī)制源碼依據(jù)register.py。下一步有了可用的沙箱環(huán)境后你可以繼續(xù)進(jìn)入Tutorial 1: Hello, Monkey學(xué)習(xí)如何配置 Infection Monkey 去利用hello容器上的 SSH 弱口令漏洞——這是系列教程的核心實(shí)操若要在其他平臺(tái)Linux 原生、Windows、云主機(jī)等安裝正式版 Infection Monkey請(qǐng)參考倉(cāng)庫(kù)的 Setup 安裝章節(jié)查看 Getting Started 使用指南了解插件安裝、運(yùn)行方式與感染地圖等基礎(chǔ)用法。贊分享網(wǎng)絡(luò)安全應(yīng)用安全【免費(fèi)下載鏈接】monkeyInfection Monkey - An open-source adversary emulation platform項(xiàng)目地址https://gitcode.com/gh_mirrors/mo/monkey點(diǎn)擊查看免費(fèi)下載相關(guān)推薦Infection Monkey 開(kāi)發(fā)環(huán)境搭建指南Agent 與 Monkey Island 從零配置Infection Monkey 開(kāi)發(fā)環(huán)境搭建指南Agent 與 Monkey Island 從零配置 Infection Monkey 是一個(gè)開(kāi)源的 adv網(wǎng)絡(luò)安全應(yīng)用安全Cal.diy 如何用 yarn dx 搭建本地開(kāi)發(fā)環(huán)境并完成首次登錄Cal.diy 如何用 yarn dx 搭建本地開(kāi)發(fā)環(huán)境并完成首次登錄 如果你想在本地跑起一份 Cal.diyCal.com 的開(kāi)源社區(qū)版MIT 許可、無(wú)企后端前端企業(yè)應(yīng)用HIXL 昇騰單邊通信庫(kù)技術(shù)指南核心架構(gòu)、零拷貝機(jī)制與端到端實(shí)戰(zhàn)HIXL 昇騰單邊通信庫(kù)技術(shù)指南核心架構(gòu)、零拷貝機(jī)制與端到端實(shí)戰(zhàn) HIXLHuawei Xfer Library是昇騰Ascend平臺(tái)上一款面向集群場(chǎng)網(wǎng)絡(luò)安全應(yīng)用安全上一篇揭秘OpenArm如何用開(kāi)源機(jī)械臂攻克AI物理研究三大難題下一篇5分鐘掌握Flowframes用AI視頻插幀技術(shù)讓你的視頻流暢度翻倍創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考