Bash 作為滲透測試的核心工具,其環境組態效率直接影響測試流程。本文首先說明如何透過 .bashrc 檔案設定別名與函式簡化指令操作,並示範客製化命令提示字元,顯示使用者、主機名稱和工作目錄等資訊。接著,引導讀者安裝必要的測試工具,包含更新套件管理器、安裝 Go 語言環境、設定 ProjectDiscovery 工具,以及 libpcap 函式庫。此外,文章也詳細介紹 NetExec 工具的安裝與應用,包含漏洞檢測、暴力破解、憑證收集等場景。最後,文章講解 Linux 檔案與目錄管理技巧,包含 ls 命令的各種用法,以及檔案新增、複製、刪除等操作,幫助讀者建立完善的測試環境。
做好準備:自訂你的駭客終端環境
在開始進行測試或攻擊之前,組態好你的終端環境是至關重要的。本篇文章將詳細說明如何自訂 Bash 終端環境,讓你在進行測試時能夠更加高效且愉快。
理解 Bash 的組態檔案
在 Unix-like 作業系統中,Bash 是最常見的命令列介面。Bash 的行為可以透過多個組態檔案來控制。以下是兩個最重要的組態檔案:
~/.bashrc:這個檔案用於在使用圖形使用者介面(GUI)登入時組態終端。它包含別名、函式、提示字元自訂及環境變數等設定。~/.bash_logout:這個檔案在你的會話結束時執行,通常用於清理環境。
組態 .bashrc 檔案
大部分時候,你需要在 ~/.bashrc 檔案中進行修改,以增加別名和函式,並自訂命令提示字元。
別名與函式
別名是一種將複雜或長命令簡化為單詞的方法。以下是一個從 ~/.bashrc 檔案中摘取的別名範例:
alias grepip="grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'"
這個別名可以簡化搜尋 IP 地址的命令。你可以根據自己的需求建立更多別名。
自訂命令提示字元
命令提示字元是你在終端中輸入命令的地方。你可以透過修改 ~/.bashrc 中的 PS1 變數來自訂提示字元。
export PS1="\u@\h \w\$ "
這個設定會顯示當前使用者、主機名稱和工作目錄,並根據使用者許可權顯示 $ 或 #。
自訂 Bash 提示字元
Bash 提示字元可以根據你的喜好進行設計,從簡單到複雜都可以。以下是一些常見的提示字元設定:
# 基本提示字元
export PS1="\u@\h \w\$ "
# 複雜提示字元,顯示 IP 地址
export PS1='$(ip a show eth0 | grep -m 1 inet | tr -s " " | cut -d " " -f 3) \u@\h \w\$ '
你可以透過修改 PS1 變數來自訂提示字元。如果需要更複雜的提示字元設計,可以參考 Bash Prompt Generator。
安裝必要的測試工具
在開始測試之前,你需要確保系統中安裝了所有必要的工具。以下是一些常見的步驟:
更新套件管理器
首先,你需要更新系統中的套件管理器。以下是更新和升級套件的命令:
sudo apt update && sudo apt upgrade -y && reboot
這些命令會更新套件列表、升級已安裝的套件並重新啟動系統。
安裝 ProjectDiscovery 工具
ProjectDiscovery 提供了一些非常有用的測試工具。以下是安裝這些工具的步驟:
-
下載 Go 語言執行時環境:
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz -
在
~/.bashrc檔案中新增 Go 路徑:echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc -
源執行
~/.bashrc檔案以應用更改:source ~/.bashrc
安裝和使用工具
安裝完成後,你就可以開始使用這些工具進行測試了。每個工具都有其獨特的用途和功能,根據你的測試需求選擇合適的工具。
Bash 解析與內部測試環境搭建
Bash 是一種強大的命令列工具,在資安測試中扮演著核心角色。本章將探討 Bash 的基礎知識,並指導如何搭建一個高效的內部測試環境。
Bash 環境的初始化與驗證
首先,我們需要確保 Go 語言的二進位制檔案路徑已經加入到系統的 PATH 變數中。這樣可以確保系統能夠正確地找到並執行 Go 相關的命令。以下是具體步驟:
$ echo $PATH
執行以上命令後,應該能夠看到 /usr/local/go/bin 已經被加入到 PATH 變數中,如下所示:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin
接著,我們需要驗證 Go 的安裝狀態,確保系統能夠正確地使用 Go。可以使用以下命令來檢查 Go 的版本和架構:
$ go version
go version go1.22.0 linux/arm64
這樣我們就可以確定 Go 已經成功安裝且可以正常執行。
安裝 ProjectDiscovery 工具
ProjectDiscovery 提供了一系列強大的測試工具,這些工具可以幫助我們更高效地進行網路安全測試。以下是安裝和設定這些工具的步驟:
安裝 pdtm
pdtm 是 ProjectDiscovery 提供的管理工具,它可以幫助我們安裝和更新所有 ProjectDiscovery 的工具。首先,使用以下命令來安裝 pdtm:
$ go install -v github.com/projectdiscovery/pdtm/cmd/pdtm@latest
安裝完成後,需要將 pdtm 加入到 PATH 中,以便系統能夠正確地找到並執行它。可以使用以下命令來實作:
$ echo "export PATH=$PATH:$HOME/.pdtm/go/bin" >> ~/.bashrc
然後執行以下命令來安裝所有 ProjectDiscovery 的工具:
$ pdtm -install-all
安裝 libpcap
libpcap 是一個用於捕捉網路封包的函式庫,naabu 等工具需要依賴它來進行網路掃描。可以使用以下命令來安裝 libpcap:
$ sudo apt install -y libpcap-dev
完成以上步驟後,所有必要的 ProjectDiscovery 工具就已經成功安裝。
NetExec 安裝與應用
NetExec 是一個網路服務漏洞利用工具,能夠幫助我們自動化大規模網路的安全評估工作。NetExec 支援多種網路協定,包括 Microsoft Active Directory 測試等。
安裝 NetExec
可以使用以下命令來安裝 NetExec:
$ sudo apt install -y pipx git && pipx ensurepath && pipx install git+https://github.com/Pennyw0rth/NetExec
NetExec 的應用場景
NetExec 在內部網路測試中具有廣泛的應用價值。以下是一些常見的應用場景:
- 檢測漏洞:NetExec 包含多種模組,可以用來檢測常見的漏洞。
- 暴力破解:透過暴力破解攻擊來測試弱密碼。
- 傳播密碼:將密碼或密碼雜湊傳播到伺服器上,查詢具有本地管理員許可權的憑證。
- 命令執行:在目標系統上執行命令。
- 收集憑證:從目標系統中收集憑證。
- 列舉 SMB 分享:檢查 SMB 分享是否具有讀寫許可權。
檔案與目錄管理
在 Linux 或 Unix 系統中,掌握檔案與目錄管理是非常重要的技能。這些技能不僅能讓你更有效地導航檔案系統、操作檔案與目錄、控制許可權、還能自動化日常任務。透過練習、耐心和一點創意,你可以將複雜的檔案系統轉化為有組織且易於管理的檔案與目錄集合。
主要主題概覽
本章將涵蓋以下主題:
- 檔案與目錄操作
- 目錄導航與操作
- 檔案許可權與擁有者
- 檔案連結(硬連結與符號連結)
檔案與目錄操作
首先我們來學習如何使用 ls 命令來列出檔案與目錄資訊。
ls 命令
ls 命令類別似於瑞士軍刀,功能強大且操作簡單。它可列出當前目錄下所有檔案和子目錄資訊。以下是一些基本用法:
基本用法
最基本的 ls 命令會列出當前目錄下所有非隱藏檔案和子目錄:
~ $ ls
Desktop Documents Downloads Music Pictures
要顯示隱藏檔案(以點開頭),可使用 -a 選項:
~ $ ls -a
. .. .bashrc Desktop Documents Downloads Music Pictures
指定目錄列表
如果要檢視其他位置目錄下之檔案和子目錄資訊時,可指定該目錄路徑:
~ $ ls /opt/
複合字元(Glob)
* 被稱為「複合字元」。例如 ls *.txt 用以列出當前目錄下所有 txt 檔案;ls sometext* 用以列出所有以 sometext 開頭之檔案。
長格式列表
使用 -l 選項可以顯示更多詳細資訊(如檔案許可權、連結數量、擁有者、群組、大小、時間戳記等):
~ $ ls -l Desktop Documents Downloads Music Pictures .bashrc .profile .bash_history .ssh/
人性化資料單位顯示
加上 -h 選項可讓大小顯示更易讀(如 KB、MB):
~ $ ls -lh Desktop Documents Downloads Music Pictures .bashrc .profile .bash_history .ssh/
按修改時間排序
-t 選項可按照修改時間排序輸出結果;-r 選項可反轉排序順序。同時加上 -h 得到更易讀且時間排序之檔案清單:
~ $ ls -ltrh Desktop Documents Downloads Music Pictures .bashrc .profile .bash_history .ssh/
按檔案大小排序
-S 用以按檔案大小排序輸出結果:
~ $ ls -lS Desktop Documents Downloads Music Pictures .bashrc .profile .bash_history .ssh/
遞迴列表
若要檢視子目錄中的所有資料時可加上 -R 選項以遞迴方式檢視所有子目錄中的內容:
~ $ ls -R Desktop Documents Downloads Music Pictures .bashrc .profile .bash_history .ssh/
新增、複製與刪除檔案或目錄
除了列出現有檔案或子目錄之外,還可能會需要對其進行新增、複製或刪除操作等動作。
新增檔案或子目錄
新增空白檔案可使用 touch 命令:
~ $ touch myfile.txt
新增新子目錄則需使用 mkdir 命令:
~ $ mkdir newdirectory/
這樣就建立了一個名為 newdirectory/ 的新空白子目錄。
副本檔案或子目錄
複製檔案或子目錄至指定位置則需 cp 命令(注意要設定副本位置):
~ $ cp myfile.txt ./myfile_copy.txt # 複製單一檔案至同一層級之不同名稱副本位置。
~ $ cp myfile.txt /path/to/destination # 複製單一檔案至不同層級之位置。
~ $ cp -r newdirectory/ ./copied_directory # 複製整個子目錄至同層級之副本位置。
其中 -r 用以遞迴式複製整個子目錄及其內容。
刪除檔案或子目錄
移除不需要的檔案或子目錄則需 rm 命令:
~ $ rm myfile.txt # 用以移除單一檔案。
~ $ rm myfile1.txt myfile2.txt # 用以移除多重檔案。
~ $ rm -r newdirectory # 用以遞迴移除整個子目錄及其內容。
其中 -r 用以遞迴式刪除整個子目錄及其內容。
此圖示展示了不同範例選項下對應之 ls 輸出內容展示:
flowchart TB;
subgraph LS_CMDS["各類別選項之ls結果"]
subgraph DEFAULT["基本選項"]
DEFAULT_CMD["ls"]
DEFAULT_CMD -->|顯示|DEFAULT_RES["Desktop Documents Downloads Music Pictures"]
end;
subgraph HIDDEN["顯示隱藏檔案"]
HIDDEN_CMD["ls -a"]
HIDDEN_CMD -->|顯示|HIDDEN_RES[". .bashrc Desktop Documents Downloads Music Pictures"]
end;
subgraph DETAILS["詳細資訊"]
DETAILS_CMD["ls -l"]
DETAILS_CMD -->|顯示|DETAILS_RES["permissions links owner group size timestamp files..."]
end;
subgraph HR_READABLE["人性化單位"]
HR_READABLE_CMD["ls -lh"]
HR_READABLE_CMD -->|顯示|HR_READABLE_RES["permissions links owner group human-readable-size timestamp files..."]
end;
subgraph TIME_SORTED["依修改時間排序"]
TIME_SORTED_CMD["ls -t"]
TIME_SORTED_CMD -->|顯示|TIME_SORTED_RES["files sorted by modification time..."]
end;
subgraph SIZE_SORTED["依大小排序"]
SIZE_SORTED_CMD["ls -S"]
SIZE_SORTED_CMD -->|顯示|SIZE_SORTED_RES["files sorted by size..."]
end;
subgraph RECURSIVE["遞迴列表"]
RECURSIVE_CMD["ls -R"]
RECURSIVE_CMD -->|顯示|RECURSIVE_RES["files in current directory and all subdirectories..."]
end;
end;
內容解密:
- 基本選項(DEFAULT):預設情況下
ls命令會列出當前工作路徑下非隱藏檔案及資料夾名稱。 - 顯示隱藏檔案(HIDDEN):使用
-a選項時會顯示所有包括隱藏檔案及資料夾名稱(隱藏檔案以點開頭)。 - 詳細資訊(DETAILS):
-l是長格式選項(long format),會提供每個條目的詳細資訊包括許可權、硬連結數量、擁有者名稱、群組名稱、大小(預設單位為bytes)、最後修改時間及檔名稱等。 - 人性化單位(HR_READABLE):
-h是人性化單位(human-readable)選項。當與-l一同使用時會把檔案大小轉換成KB/MB等更易讀取之單位表示方式。 - 依修改時間排序(TIME_SORTED):
-t是依照修改時間進行排序之選項。當與-r一同使用時會反轉其排序方式。 - 依大小排序(SIZE_SORTED):
-S是依照檔案大小進行排序之選項。會根據各條目的實際儲存空間從小到大進行依序排列。 - 遞迴列表(RECURSIVE):
-R是遞迴清單(recursive list)選項。當使用此選項時會一併列出包含所在路徑及其底層次所有分支路徑內所有條目的完整清單結果。