對於想入門駭客技術的讀者,熟悉 Linux 系統至關重要。Kali Linux 作為滲透測試的熱門發行版,提供豐富的工具,但需要使用者具備扎實的 Linux 基礎。本文從系統安裝、基本命令列操作到 Bash 指令碼編寫,循序漸進地介紹關鍵知識點,並涵蓋網路安全基礎與滲透測試準備,讓讀者能快速掌握 Kali Linux 環境。文章首先說明如何在虛擬機器中安裝 Kali Linux,避免影響現有系統,接著詳述 Linux 的檔案系統結構和常用命令,例如 lscdcpmvrmmkdirrmdir,並搭配實際操作範例,讓讀者更容易理解。此外,文章也介紹了檔案編輯器 Nano 和 Vi/Vim 的使用方法,以及資料處理和過濾的利器 grepawksed。網路操作方面,文章則著重於 ip apingtraceroutenetstat 等命令,並以圖示說明其關係和作用,同時也包含了網路掃描工具 nmap 的基本用法。為了提升效率,文章也說明瞭環境變數的管理方法,以及 Bash 指令碼編寫的技巧和最佳實踐,並以資料備份和清理臨時檔案的指令碼範例進行示範。最後,文章介紹了網路安全基礎和滲透測試準備,包含 nmap 進行埠掃描和 SYN 掃描,以及滲透測試框架 Metasploit 的應用,並以圖示說明不同網路安全掃描工具的關係和應用場景。

入門駭客必備的 Linux 基礎知識

Kali Linux 作為駭客界的最愛,提供了豐富的工具來進行網路安全測試及滲透測試。對於剛入門的駭客來說,掌握 Linux 的基本操作和原理是至關重要的。以下內容將引導讀者深入瞭解 Linux 的基本概念、命令列操作及其在滲透測試中的應用。

Linux 的重要性

在現代資訊科技領域,駭客技術已成為一項必備的技能。從國家間的情報戰到網路犯罪、勒索軟體等,這些活動無一不展示了駭客技術的強大影響力。Linux 作為開源系統,不僅在伺服器端廣泛應用,更是大多數安全工具的基礎平台。學習 Linux 不僅能提升駭客技能,還能幫助理解資安防護的核心概念。

安裝與設定

玄貓建議使用虛擬機器來安裝 Kali Linux,這樣可以避免對現有系統造成影響。以下是安裝虛擬機器和 Kali Linux 的基本步驟:

  1. 下載與安裝虛擬機器軟體:選擇 VirtualBox 或 VMware 等虛擬機器軟體,並下載適合自己的版本。
  2. 建立新虛擬機器:開啟虛擬機器軟體,選擇「新建」並組態硬體資源,如記憶體和硬碟空間。
  3. 安裝 Kali Linux:將 Kali Linux 映像檔案掛載到虛擬光碟機中,啟動虛擬機器並按照提示完成安裝。

內容解密:

這段程式碼展示瞭如何使用 Bash 語法來定義函式、設定變數及呼叫外部指令。以下是詳細說明:

  • #!/bin/bash:這是 Bash 程式的標頭,告訴系統該使用 Bash 來執行此指令碼。
  • set -e:當執行過程中任何命令傳回非零狀態碼時,指令碼會立即離開。
  • function install_virtualbox() { ... }:定義一個名為 install_virtualbox 的函式,用於下載並安裝 VirtualBox。
  • sudo apt-get update && sudo apt-get install -y virtualbox:更新本地套件索引並安裝 VirtualBox。
  • function create_vm() { ... }:定義另一個函式 create_vm,用於建立新的虛擬機器。
  • VBoxManage createvm --name "KaliVM" --register:使用 VirtualBox 命令列工具建立並註冊一個名為 “KaliVM” 的虛擬機器。
  • VBoxManage modifyvm "KaliVM" --memory 2048:設定虛擬機器的記憶體為 2048 MB(2 GB)。
  • VBoxManage createhd --filename "KaliHD.vdi" --size 50000:建立一個 50 GB 的硬碟檔案 “KaliHD.vdi”。
  • VBoxManage storagectl "KaliVM" --name "SATA Controller" --add sata --controller IntelAhci:新增一個 SATA 控制器到虛擬機器中。
  • VBoxManage storageattach "KaliVM" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium "KaliHD.vdi":將剛才建立的硬碟附加到 SATA 控制器上。
  • VBoxManage storagectl "KaliVM" --name "IDE Controller" --add ide:新增一個 IDE 控制器到虛擬機器中。
  • VBoxManage storageattach "KaliVM" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /path/to/kali.iso:將 Kali Linux ISO 檔案附加到 IDE 控制器上。
#!/bin/bash
set -e

function install_virtualbox() {
    sudo apt-get update && sudo apt-get install -y virtualbox
}

function create_vm() {
    VBoxManage createvm --name "KaliVM" --register
    VBoxManage modifyvm "KaliVM" --memory 2048
    VBoxManage createhd --filename "KaliHD.vdi" --size 50000
    VBoxManage storagectl "KaliVM" --name "SATA Controller" --add sata --controller IntelAhci
    VBoxManage storageattach "KaliVM" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium "KaliHD.vdi"
    VBoxManage storagectl "KaliVM" --name "IDE Controller" --add ide
    VBoxManage storageattach "KaliVM" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive \
        --medium /path/to/kali.iso
}

install_virtualbox
create_vm

安裝與啟動

經過以上步驟設定好後,可以進入 Kali Linux 的桌面環境。接下來便可以開始探索 Linux 的強大功能。

處理檔案與目錄

Linux 的檔案系統結構獨特且強大,掌握這些基本命令是必須的:

ls                     # 檢視目錄內容
cd                     # 改變目錄
pwd                    # 檢視當前工作目錄
cp [來源] [目的地]   # 複製檔案或目錄
mv [來源] [目的地]   # 移動或重新命名檔案或目錄
rm [檔案名]           # 刪除檔案或目錄
mkdir [目錄名]         # 建立新目錄
rmdir [目錄名]         # 刪除空目錄
小段落標題

應用範例

假設我們想在 /home/user/ 中建立一個名為 myproject 的目錄:

mkdir /home/user/myproject
cd /home/user/myproject
touch file1.txt file2.txt   # 建立兩個空白檔案 file1.txt 和 file2.txt
ls                       # 檢視當前目錄內容(應該會看到 file1.txt 和 file2.txt)
小段落標題

次段落標題

編輯與檢視檔案

玄貓推薦使用 Nano 或 Vi/Vim 作為檔案編輯器:

nano file1.txt          # 用 Nano 編輯 file1.txt
vi file2.txt            # 用 Vi 編輯 file2.txt

cat file1.txt           # 檢視 file1.txt 的內容
less file2.txt          # 用 less 檢視 file2.txt 的內容(可向下滾動檢視)
more file2.txt          # 用 more 檢視 file2.txt 的內容(可向上滾動檢視)

次段落標題

資料管理與過濾

Linux 提供了許多強大的命令來處理和過濾資料:

grep 'pattern' filename     # 在 filename 中搜尋包含 'pattern' 的行
awk '{print $1}' filename    # 提取 filename 中每行的第一個欄位
sed 's/old/new/g' filename   # 在 filename 中替換所有 'old' 段落為 'new'
小段落標題

次段落標題

網路操作

瞭解如何使用網路相關命令來進行滲透測試:

ifconfig               # 檢視網路介面狀態及組態(請注意 ifconfig 已被 ip a 操作取代)
ip a                   # 檢視 IP 地址及網路介面狀態(推薦替代 ifconfig)
ping [IP 地址]         # 測試連線指定 IP 地址是否可達(例如 ping google.com)
traceroute [IP 地址]   # 路由追蹤至指定 IP 地址(例如 traceroute google.com)
netstat -tuln          # 檢視所有盜聽中的 TCP/UDP 埠號及協定狀態(如果沒有 netstat 安裝 ss -tuln)

# 網路掃描工具 nmap 常用指令範例:
nmap -sP [IP 地址]     # 埠掃描指定 IP 地址範圍(例如 nmap -sP 192.168.1.0/24)
nmap -sS -p [Port Range] [IP Address Range]
小段落標題

此圖示展示了常見網路操作命令之間的關係及其作用:

  graph TD;
    B[B]
    C[C]
    A[檢視網路介面狀態及組態] --> B{ifconfig 或 ip a};
    B --> C{檢視 IP 地址及網路介面狀態};
    C --> D[檢視所有監聽中的 TCP/UDP 埠號及協定狀態];

內容解密:

在此圖示中:

  • A 處理查詢網路介面狀態及組態的需求,
  • B 分支出兩種不同方式進行查詢:使用傳統命令 ifconfig 或現代化命令 ip a
  • C 再進一步處理根據選擇方式展示相關資訊,
  • D 最後處理顯示所有監聽中的 TCP/UDP 埠號及協定狀態。

玄貓認為深入學習這些基本命令可以讓你更好地理解 Linux 是如何運作以及如何在實際應用中進行最佳化和調整。

次段落標題

最佳化環境變數

環境變數對於系統執行和指令碼執行非常重要。玄貓會教你如何管理環境變數以提升效率:

echo $PATH                  # 檢視目前 PATH 機制變數設定值(PATH 通常存放可執行檔之位置)
export PATH=$PATH:/new/path   # 新增新目錄到 PATH 中(例如 /new/path)

# 暫存環境變數 (session-only)
export MY_VAR="my_value"

# 永久環境變數 (持久化)
echo 'export MY_VAR="my_value"' >> ~/.bashrc

# 檢視所有環境變數 (根據需求進行篩選)
printenv | grep MY_VAR   # 指定篩選印出 MY_VAR 情況值

# 清除環境變數 (session-only)
unset MY_VAR              # 清除暫存環境變數 MY_VAR 值設定條件 (僅限於目前 session)

# 清除永久化環境變數 (持久化)
sed -i '/MY_VAR/d' ~/.bashrc   # 檔案清除 env MY_VAR 持久化記錄 (會影響未來 session)

次段落標題

自動化與指令碼編寫

玄貓將介紹 Bash 指令碼編寫的基本技巧和最佳實踐:

#!/bin/bash   ## , 說明指令碼要使用 bash shell 去執行處理程式 ###

# 註解: 說明指令碼要完成什麼工作, 每行都是單獨的一句話, 不要多句寫在同一行, 註解要完整 ### 加上#即可註解過程處理 ## 建議加入過程處理詳細說明 ## 指派指向起始或末端 ## 底部若不加上 exit, 預設為成功 ## 結果傳回值為零 ### 則表示成功, 若非零值表示錯誤.

set -e     ## 若有任何過程出錯, 需立即停止當前指令碼進行程式 ## set -e 命令啟用了這種行為, 錯誤停止 ### set -e 有助於防止錯誤輸出繼續影響結果 ### 若要取消這個規則, 在指令碼末端加上 set +e ### 改善靈活性 ### 展現安全性策略 ### 須注意該規則 ## 是否符合需求預期 ### 是否需要更靈活設定方式.

## 背景 ### 本文脈述說: 是否適合對於多人環境分享使用者修改許可權 ### 評估批准

function backup_data() {
    echo "Starting data backup..."
    tar czf /path/to/backup.tar.gz /data/directory/
    echo "Backup completed."
}

function clean_up() {
    echo "Cleaning up temporary files..."
    rm -rf /tmp/*
}

backup_data      ## 呼叫函式進行資料備份任務 ## 根據預設時間點自動排程或者手動觸發 ## 或開啟日誌記錄, 分析備份成功失敗 ## 是否符合安全性需求 ## 排程頻率要考慮執行影響時機 ## 對於臨時檔案處理方式要注意影響範圍 ## 安全性原則 ## 是否需要更多細節設定.

clean_up        ## 呼叫函式清理臨時檔案任務 ## 根據預設時間點自動排程或者手動觸發 ## 或開啟日誌記錄, 分析臨時檔案處理結果. ## 是否符合安全性需求.

次段落標題

內容解密:

此範例展示瞭如何使用 Bash 編寫自動化指令碼以進行資料備份及清理臨時檔案。以下是詳細說明:

  • #!/bin/bash:****: 說明指令碼要使用 bash shell 去執行處理程式。
  • # 註解: ... : 註解: 說明指令碼要完成什麼工作,每行都是單獨的一句話,不要多句寫在同一行,註解要完整。
  • set -e: 錯誤停止: 若有任何過程出錯, 需立即停止當前指令碼進行程式。這種行為由 set -e 命令啟用,防止錯誤輸出繼續影響結果
  • 函式: 分別定義兩個函式 backup_data()clean_up():
    • backup_data(): 處理資料備份工作:
      • tar czf /path/to/backup.tar.gz /data/directory/: 壓縮 /data/directory/ 資料夾並生成 /path/to/backup.tar.gz.
      • 在備份開始和完成時分別輸出提示資訊。
    • clean_up(): 清理臨時檔案:
      • rm -rf /tmp/*: 副檔案 /tmp/ 中所有檔案.
      • 在清理開始時輸出提示資訊。

玄貓認為理解和掌握這些基本概念不僅能提升你的駭客技能,還能幫助你在日常工作中更高效地使用 Linux。

次段落標題

網路安全基礎與滲透測試準備

瞭解如何進行網路掃描、埠掃描以及基本防禦措施:

nmap -sP [IP 地址範圍]      # 埠掃描指定 IP 地址範圍 (例如 nmap -sP 192.168.1.0/24)

# 主動探測模式:
nmap -sS [IP 地址範圍]      # SYN 掃描指定 IP 地址範圍 (例 nmap -sS google.com)

# 滲透測試工具:
metasploit               # 強大而靈活的框架支援多種攻擊形式(MSFConsole)
小段落標題

此圖示展示了不同網路安全掃描工具之間的關係及其應用場景:

  graph TD;
    B[B]
    C[C]
    D[D]
    A[網路安全掃描工具] --> B{nmap};
    B --> C{埠掃描};
    B --> D{SYN 掃描};
    C --> E[基本防禦];
    D --> E;

內容解密:

在此圖示中:

  • A 處理網路安全掃描工具選擇需求,
  • B 分支出根據 nmap 工具提供兩種不同模式進行埠和 SYN 掃描,
  • CD 分別處理埠掃描及 SYN 掃描模式,
  • E 最終都會達到基本防禦階段,

玄貓認為理解和掌握這些基本概念不僅能提升你的駭客技能,還能幫助你在日常工作中更高效地使用 Linux。

次段落標題

此段結束符