你覺得當駭客很酷,也想入門嗎?你努力半天,仍搞不清楚當一個駭客要學什麼,導致資安功力仍不見增長嗎?閱讀市面上的資安入門書籍,但還是有見樹不見林的感覺嗎?
您好,我是Iok。從事資安工作多年,有多次指導新人的經驗,常發覺新人因基礎不扎實,而導致工作進度緩慢或努力方向錯誤。
而其中的問題所在,是新人根本不知道做這行之前,需要什麼樣的基礎學科知識,但資安領域,其實是可以歸納入門必修與選修學科知識。
接下來,本篇文章會完整介紹資安必選修學科知識。希望能成為資安知識地圖,讓大家一步步按圖索驥。
除此之外,我還會無私地跟你分享,我以前學習這些學科的補充書籍與網路教材。
學習好似蓋一棟摩天大樓,需要多日打樁,建立良好地基。看似枯燥無聊的基礎知識,卻是邁向駭客之路不可或缺的墊腳石。
因此,雖然當駭客無法速成。這篇文章希望能幫助想進入資安領域的新手,透過必選修知識地圖,能減少走彎路的時間。
若你有心要成為駭客,就請看到文章最後吧。
Linux
Linux 自 1991 年 Linux 之父 Linus Torvalds 開發至今,已成為世界上最受歡迎的開源伺服器作業系統。網際網路上有許多服務由 Linux 提供。
而 Offensive Security 公司維護的 Kali Linux,是最受駭客歡迎的 Linux 版本。
了解 Linux 的基礎,如 Command Line 指令、帳號使用者群組、檔案權限控管機制等。雖然多數Linux 版本預設提供圖形介面,但是幾乎所有的工作都能以命令列指令執行。
而 Offensive Security 公司提供的滲透測試教育訓練課程 PEN-200 ,亦有專章講解命令列。
進階部分,可再學習 Linux 伺服器程式安裝。例如網頁、DNS 、資料庫、主機防火牆 (iptables) 等。
Python
Python 是一種程式語言。近幾年由於機器學習與人工智慧熱潮興起,Python 程式語言搖身一變成為時下最流行的程式語言。 有許多駭客很喜歡使用 Python。
Python 也是一種 Scripting Language,不需要編譯後再執行。結構化的程式語法,執行即所得,非常適合初學者。
「Batteries included」的哲學,預設安裝就有許多方便程式模組套件,不需額外安裝下載。
若無內建,在 PyPI 網站上,也可搜尋到非官方開發者釋出的套件。這些模組可視為是程式的延伸外掛,擴充 Python 原本沒有的功能。
許多 Github 上 發佈的弱點攻擊程式 (exploit),也大都使用 Python 撰寫。由此可知,Python 十分受到駭客歡迎,適合投資時間學習。
C 語言
1972 年,貝爾實驗室 Ken Thompson 與 Dennis Ritchie 研究員為移植 Unix 作業系統到 PDP-11 主機,發明了 C 語言。
C 語言特色具有靈活、結構化、可移植性高。其編譯器常見於各大作業系統平台,如 GCC、Vistual Studio。編譯後的程式效能好。
C 語言也廣泛使用於軟體開發的領域中。大至超級電腦,小至洗衣機的微電腦,都能看到 C 語言程式的蹤跡。
而 Linux 作業系統核心(kernel) 使用 C 和組合語言撰寫。美國麻省理工學院 (MIT) 的作業系統課程(Operating System Engineering) 教學用作業系統 (xv6) 亦是使用 C 與組合語言撰寫。
而微軟 Windows NT 作業系統原始碼,亦大多由 C 與 C++ 語言撰寫 [來源]。
由此可知,要深入了解作業系統核心,熟悉 C 語言是必備條件。
TCP/IP 網路通訊協定
網路是一群互連的電腦,網路通訊協定是這些電腦相互溝通的語言和方式,而最普遍使用的網路通訊協定即是 TCP/IP。
TCP/IP 跟人體構造一樣,你每天使用,但你不一定明白箇中原理。IP 就好似電腦的門牌地址。而 IP 通訊協定是以封包為基礎的電腦間定址方法。
TCP 是具備容錯機制的傳輸協定,常用於可靠連線傳輸。TCP/IP 則是所有依靠在TCP與IP 上通訊協定的泛稱。如 HTTP、FTP、SMTP 等應用程式通訊協定,也是其中的一部分。你熟悉的網路服務,也都是運行在TCP/IP 通訊協定之上。
由此可知,要當一個駭客,深入了解TCP/IP 可以更明白電腦通訊方式與原理,並有助於找到協定中的弱點與問題。
關聯式資料庫
網站服務普遍儲存資料在關聯式資料庫。關聯式資料庫主要利用 SQL 語法進行資料的新增、修改、刪除與查詢。
而最容易切入的低成本方式,即在電腦安裝 MySQL(開源版稱 MariaDB)或 PostgreSQL 關聯式資料庫管理軟體,練習 SQL 語法。
比方說,建立資料庫、刪除資料庫、建立資料表、刪除資料表、新增並定義資料表欄位名稱與屬性、新增、修改、刪除與查詢資料,或是進階的 Having、Group by、Join 等 SQL 語法。
由於 SQL Injection 是網站服務常見的弱點。學習 SQL 語法,有助於了解網頁程式與資料庫之間互動,未來若有機會碰到 SQL Injection 弱點時,也較易上手攻擊或防禦。
OWASP Top 10
OWASP Top 10 是最具權威的網頁攻擊弱點列表前十名。每隔幾年 OWASP 協會會公告年度網頁弱點排名,目前最新排名是 2021發布的 。
弱點排名清單代表多數網站的共通弱點。熟悉這些弱點的攻防手法可更了解如何攻擊或防禦網站,對於未來不管是擔任攻擊方(紅軍)、防守方(藍軍)的相關工作,都有幫助。
駭客工具 (Hacktools)
所謂「割菜還需鐮刀,剪髮還需剃刀」,想進一步探索TCP/IP 通訊協定、網站或應用程式弱點,必須知道駭客常用的工具。
比方說,NMAP 用於通訊埠掃描。Metasploit Framework 整合最全面的弱點 Exploit 與滲透測試工具。Burp Suite 與 Fiddler 可監聽 Web 的流量,對網站進行中間人攻擊,方便地攔截並修改網站請求訊息。
proxychains 是應用程式強制代理伺服器設定工具,針對沒有支援 Proxy 設定的應用軟體,進行強制代理。
而 Kali Linux 已將本節提到的工具,整合到一張 Live CD ,開機就能啟用,可省下不少安裝與設定環境的麻煩,直接上手測試。
請留意,操作上述提到的駭客工具,請用於合法測試環境,用於非法測試或入侵,會招致刑責。
同場加映:quark-engine
知名的 Android 惡意程式評分系統 quark-engine ,就是標準的駭客思維。quark-engine 是一個開源專案 (Open Source) ,專案開發者來自台灣,設計原理是參考台灣的刑事訴訟法-第四章的犯罪行為階段論,來解析 Android APK 程式中潛藏的惡意行為。
quark-engine 專案曾發表在 Black Hat Asia、Hack in the Box 資安研討會,並已成功整合至 Jadx、APKLab 等其他 Android 惡意程式分析工具中。
若讀者對 quark-engine 的開發過程有興趣,可參閱其中一位專案核心開發者 JunWei Sung的部落格文章 – Quark-Engine: Three years later。
恭喜你已經讀到最後,如果對這一系列文章有興趣,也歡迎你閱讀我另一篇文章「如何成為駭客 (資安研討會、社群與網路資源篇)」
4 comments
您好,我對資安有興趣也對逆向工程也感興趣
但因為是新手,想請問有沒有推薦的書籍可以讓我初學者了解??
不管是逆性工程的書或x86語言的書
謝謝
Albert 您好,關於逆向工程的書籍,請參考我另外一篇文章 如何成為駭客 – 逆向工程 (Reverse Engineering) 篇
你好想請問,通常駭客最組電腦的時候會特別注意些什麼,或者在加裝什麼東西嗎。
電燈泡您好
一般不會特別注意什麼。但如果要安裝 Linux ,需要留意 Linux 作業系統是否有支援你的電腦硬體的驅動程式,比方說 webcam、網路卡、顯示卡等。讓你可以在 Linux 可以成功驅動。