産品特色
編輯推薦
介紹眾多Python開源工具使用方法,立足入侵事故一綫應對業務需求。
涵蓋大量靜態/動態分析示例,輕鬆掌握並快速應用。
以內存分析為代錶講解分析技巧,實現各領域實操。
內容簡介
惡意代碼分析過程中,重要的是掌握惡意代碼的特徵,此時需要靈活運用綫上服務的快速分析數據和主要惡意代碼的數據庫。《利用Python開源工具分析惡意代碼》從應對入侵事故一綫業務人員角度齣發,介紹瞭分析惡意代碼時的Python 等眾多開源工具的使用方法,也給齣瞭可以迅速應用於實際業務的解決方案。
作者簡介
趙涏元(chogar@naver.com)
目前在KB投資證券公司負責安全工作,管理安全防範項目組(http://www.boanproject.com)。在A3 Security公司做過5年滲透測試谘詢顧問,在滲透測試項目管理、網絡應用開發、源代碼診斷等多種領域執行過漏洞診斷。之後在KTH安全團隊負責移動服務和雲服務安全、應對侵權事故等業務。與人閤著《Kali Linux & BackTrack滲透測試實戰》《Android惡意代碼分析與滲透測試》等,現與安全防範項目組成員一起活躍在各個領域。
崔祐碩
目前在(株)韓國信息保護教育中心(KISEC,Korean Information Security Education Center)f-NGS研究所負責安全及相關領域研究,並在此基礎上舉辦講座,不斷發錶分析報告書。主要研究惡意代碼分析及發布、開源工具應用、Web黑客攻防等,緻力於技術與人文的結閤。曾在(株)Tricubelab分析惡意代碼發布、研究多種方法,構建並測試惡意代碼相關開源工具,在此過程中積纍創意和經驗。負責安全防範項目組的惡意代碼及漏洞部分研究,與人閤著《Kali Linux & BackTrack滲透測試實戰》,管理Hakawati Lab(www.hakawati.co.kr)博客。
李導炅
曾在三星SDS負責4年Web漏洞診斷業務,現在NSHC Red Alert團隊擔任惡意代碼分析研究員,同時負責教育內容開發業務。在安全防範項目組負責惡意代碼分析項目,關注並研究開源分析與開發。
鄭智訓
計算機信息通信工程專業在讀,曾任蔚山大學信息安全興趣小組UOU_Unknown組長,目前依然參與小組活動。在安全防範項目組以惡意代碼分析項目起步,負責惡意代碼分析相關開源工具分析與研究項目。正在研究利用開源工具開發簡單高效的惡意代碼分析自動化係統。
目錄
1 開源軟件與Python環境 1
1.1 關於開源軟件 2
如果管理人員熟悉開源軟件 2
1.2 Python簡介 3
1.3 搭建Python環境與程序發布 3
1.3.1 在Windows下搭建Python環境 3
1.3.2 使用Eclipse與PyDev搭建Python開發環境 7
1.3.3 使用pyinstaller發布程序 12
1.4 從Github站點下載開源工具 15
1.5 安裝Python模塊 17
1.6 小結 19
2 通過peframe學習PE文件結構 20
2.1 PE文件結構 21
2.1.1 DOS Header結構體 23
2.1.2 DOS Stub Program 26
2.1.3 IMAGE_NT_HEADER結構體 26
2.2 分析peframe工具 28
2.2.1 IMPORT模塊 29
2.2.2 預處理部分 30
2.2.3 分析main函數 35
2.2.4 peframe中的函數 40
2.3 惡意代碼的特徵因子 136
2.3.1 殺毒結果 136
2.3.2 散列值 137
2.3.3 加殼器 138
2.3.4 節區名與熵 139
2.3.5 API 141
2.3.6 字符串 143
2.3.7 PE元數據 144
2.4 小結 145
3 惡意代碼分析服務 146
3.1 惡意代碼分析環境 147
3.1.1 自動分析服務種類 147
3.1.2 惡意代碼分析Live CD介紹 148
3.1.3 收集惡意代碼 151
3.2 綫上分析服務 166
3.2.1 VirusTotal服務 166
3.2.2 應用VirusTotal服務API 173
3.2.3 使用URLquery查看感染惡意代碼的網站 188
3.2.4 使用hybrid-analysis分析惡意代碼 190
3.3 小結 192
4 使用Cuckoo Sandbox 193
4.1 Cuckoo Sandbox定義 195
4.2 Cuckoo Sandbox特徵 196
4.3 安裝Cuckoo Sandbox 197
4.3.1 安裝Ubuntu 14.04 LTS 199
4.3.2 安裝VMware Tools 203
4.3.3 鏡像站點 205
4.3.4 安裝輔助包與庫 206
4.3.5 安裝必需包與庫 207
4.3.6 設置tcpdump 213
4.4 安裝沙箱 214
4.4.1 安裝沙箱 214
4.4.2 安裝增強功能 218
4.4.3 安裝Python與Python-PIL 219
4.4.4 關閉防火牆與自動更新 220
4.4.5 網絡設置 221
4.4.6 設置附加環境 223
4.4.7 安裝Agent.py 224
4.4.8 生成虛擬機備份 228
4.4.9 通過復製添加沙箱 229
4.5 設置Cuckoo Sandbox 232
4.5.1 設置cuckoo.conf 232
4.5.2 設置processing.conf 236
4.5.3 設置reporting.conf 238
4.5.4 設置virtualbox.conf 239
4.5.5 設置auxiliary.conf 242
4.5.6 設置memory.conf 243
4.6 運行Cuckoo Sandbox引擎 247
4.6.1 Community.py 248
4.6.2 使用最新Web界麵 250
4.6.3 上傳分析文件 252
4.6.4 調試模式 255
4.6.5 使用經典Web界麵 256
4.7 Cuckoo Sandbox報告 257
4.7.1 JSONdump報告 257
4.7.2 HTML報告 258
4.7.3 MMDef報告 259
4.7.4 MAEC報告 260
4.8 Api.py分析 262
4.8.1 POST-/tasks/create/file 263
4.8.2 POST-/tasks/create/url 264
4.8.3 GET- /tasks/list 264
4.8.4 GET-/tasks/view 266
4.8.5 GET- /tasks/delete 267
4.8.6 GET-/tasks/report 267
4.8.7 GET-/tasks/screenshots 269
4.8.8 GET-/files/view 269
4.8.9 GET-/files/get 270
4.8.10 GET-/pcap/get 270
4.8.11 GET-/machine/list 270
4.8.12 GET-/machines/view 272
4.8.13 GET-/cuckoo/status 272
4.9 Cuckoo Sandbox實用工具 273
4.9.1 clean.sh 273
4.9.2 process.py 274
4.9.3 stats.py 274
4.9.4 submit.py 275
4.10 分析結果 275
4.10.1 Quick Overview 276
4.10.2 Static Analysis 279
4.10.3 Behavioral Analysis 280
4.10.4 Network Analysis 281
4.10.5 Dropped Files 282
4.11 使用Volatility的內存分析結果 282
4.11.1 Process List 283
4.11.2 Services 284
4.11.3 Kernel Modules 285
4.11.4 Device Tree 285
4.11.5 Code Injection 286
4.11.6 Timers 286
4.11.7 Messagehooks 287
4.11.8 API Hooks 287
4.11.9 Callbacks 288
4.11.10 Yarascan 288
4.11.11 SSDT 288
4.11.12 IDT 289
4.11.13 GDT 289
4.12 Admin功能 290
4.13 比較功能 290
4.14 小結 292
5 惡意代碼詳細分析 293
5.1 查看Cuckoo Sandbox分析結果 294
5.2 綫上分析報告 295
5.3 手動詳細分析 296
5.4 小結 323
6 其他分析工具 324
6.1 使用viper分析與管理二進製文件 325
6.1.1 安裝viper 325
6.1.2 使用viper 326
6.1.3 viper命令 327
6.1.4 模塊 337
6.2 使用ClamAV對惡意代碼分類 354
6.3 使用pyew管理與分析惡意代碼 363
6.3.1 查看幫助 365
6.3.2 查看導入錶 368
6.3.3 在VirusTotal中檢測文件 370
6.3.4 查看URL信息 371
6.3.5 檢測PDF文件 373
6.4 使用pescanner檢測惡意代碼 379
6.4.1 使用Yara簽名進行檢測 381
6.4.2 檢測可疑API函數 383
6.4.3 查看熵值 385
6.5 使用PEStudio分析可疑文件 385
6.6 分析網絡包 388
6.6.1 使用captipper分析網絡包 388
6.6.2 使用pcap-analyzer分析網絡包 390
6.6.3 使用net-creds獲取重要信息 393
6.7 使用各種開源工具分析惡意代碼文件 395
6.8 使用Docker容器 402
6.8.1 Docker定義 402
6.8.2 關於Docker Hub 403
6.8.3 使用REMnux Docker鏡像 405
6.9 小結 408
7 利用內存分析應對入侵事故 409
7.1 Volatility簡介與環境搭建 410
參考社區(維基頁麵) 415
7.2 使用Volatility分析惡意代碼 416
7.3 開源工具:TotalRecall 424
7.4 使用Redline分析內存 433
7.5 Volatility插件使用與推薦 441
7.6 使用Rekall進行內存取證分析 445
7.7 使用VolDiff比較內存分析結果 462
7.8 使用DAMM比較內存分析結果 471
7.9 惡意代碼內存分析示例 474
7.10 通過攻擊模擬瞭解內存轉儲用法 477
7.11 小結 482
《Python實戰:數據科學與機器學習應用》 內容簡介 《Python實戰:數據科學與機器學習應用》是一本旨在幫助讀者掌握Python在數據科學和機器學習領域核心應用的書籍。全書圍繞實際項目,循序漸進地引導讀者理解並運用Python強大的庫生態來解決真實世界的數據挑戰。我們不涉及惡意代碼分析,而是將焦點完全置於數據驅動的決策和智能模型的構建上。 本書的開篇,我們將首先為你奠定紮實的Python基礎,但不同於傳統的編程入門,這裏的Python介紹將緊密結閤數據科學的需求。你將學習如何安裝和配置必要的開發環境,包括Anaconda發行版,它集成瞭Python解釋器以及眾多科學計算庫,如NumPy、Pandas、Matplotlib和Scikit-learn。我們將深入講解Python的核心數據結構,如列錶(lists)、元組(tuples)、字典(dictionaries)和集閤(sets),並展示它們在處理和組織數據時的效率和靈活性。特彆是,我們將詳細介紹NumPy庫,它是Python科學計算的基石。你將學習如何創建和操作多維數組(ndarrays),理解嚮量化操作的優勢,並掌握切片、索引、重塑和閤並數組等高級技巧,這些都是進行高效數值計算的基礎。 緊接著,我們將引入Pandas庫,這是Python數據分析的另一項核心利器。Pandas提供瞭兩個關鍵的數據結構:Series(一維帶標簽數組)和DataFrame(二維帶標簽錶格型數據結構)。我們將花費大量篇幅講解如何使用Pandas讀取不同格式的數據文件,如CSV、Excel、JSON和SQL數據庫,並深入探討數據清洗的各個環節。這包括處理缺失值(NaN),例如使用填充、刪除或插值的方法;識彆和處理異常值,通過統計方法或可視化手段;以及數據類型轉換,確保數據的準確性和一緻性。你還將學習如何使用Pandas進行數據篩選、排序、分組(group by)和聚閤,這些操作是探索數據模式、提取關鍵信息的重要手段。此外,我們還會講解如何閤並(merge)、連接(join)和拼接(concat)多個DataFrame,以構建更復雜的數據集。 在掌握瞭數據處理的基礎之後,本書將轉嚮數據可視化,這是理解數據、溝通洞察的關鍵環節。我們將重點介紹Matplotlib和Seaborn這兩個強大的可視化庫。Matplotlib作為Python最基礎的繪圖庫,我們將學習繪製各種基本圖錶,如摺綫圖、散點圖、柱狀圖、餅圖和直方圖,並精通如何自定義圖錶的各個元素,包括標題、軸標簽、圖例、顔色、綫型和標記。Seaborn則是在Matplotlib基礎上構建的高級可視化庫,它提供瞭更美觀、更具統計意義的圖錶,如箱綫圖、小提琴圖、熱力圖、計數圖和分布圖。我們將演示如何利用Seaborn快速生成揭示變量之間關係和分布的圖錶,並講解如何結閤使用這兩個庫來創建復雜、信息豐富的可視化作品。 本書的核心部分將聚焦於機器學習。我們將從機器學習的基本概念入手,解釋監督學習、無監督學習和強化學習的區彆,以及它們的應用場景。對於監督學習,我們將深入介紹迴歸和分類問題,並詳細講解幾種經典的算法。在迴歸方麵,我們將講解綫性迴歸,包括其原理、模型評估指標(如均方誤差MSE、R²分數)以及正則化技術(如Lasso和Ridge迴歸)如何防止過擬閤。在分類方麵,我們將深入講解邏輯迴歸、支持嚮量機(SVM)及其核函數的使用、決策樹及其剪枝策略,以及隨機森林(Random Forest)集成學習方法。對於無監督學習,我們將重點講解聚類算法,如K-Means,以及降維技術,如主成分分析(PCA)。 為瞭讓讀者更好地理解這些算法,我們將詳細介紹Scikit-learn庫,這是Python中最流行、最全麵的機器學習庫。你將學習如何使用Scikit-learn的API來加載數據集、預處理特徵(如標準化、歸一化)、訓練模型、進行預測,以及評估模型性能。我們將講解交叉驗證(cross-validation)的重要性,以獲得對模型泛化能力的可靠估計,並演示如何使用網格搜索(Grid Search)或隨機搜索(Random Search)來調優模型超參數,以找到最佳的模型配置。 本書還將引入深度學習的基礎概念,但我們將主要側重於使用Keras和TensorFlow的API來構建和訓練神經網絡。我們將從最簡單的感知器模型開始,逐步構建多層感知器(MLP),並介紹激活函數(如ReLU、Sigmoid)、損失函數(如交叉熵)和優化器(如Adam、SGD)的概念。你將學習如何構建捲積神經網絡(CNN)來處理圖像數據,理解捲積層、池化層和全連接層的作用;以及如何構建循環神經網絡(RNN)和長短期記憶網絡(LSTM)來處理序列數據,如文本。我們將通過實際例子,如圖像分類、文本情感分析等,來演示這些深度學習模型的構建和應用。 為瞭使理論知識更具實踐性,本書的每一章都包含精心設計的代碼示例和實踐練習。這些示例將從簡單的數據操作開始,逐步過渡到構建復雜的機器學習模型。我們鼓勵讀者動手實踐,修改代碼,探索不同的參數組閤,並嘗試將學到的技術應用到自己的數據集中。每個章節末尾都會提供思考題和項目建議,幫助讀者鞏固所學知識,並激發進一步探索的興趣。 《Python實戰:數據科學與機器學習應用》的目標讀者包括但不限於:對數據分析、機器學習和深度學習感興趣的初學者,希望將Python應用於數據科學領域的學生和研究人員,以及需要提升Python在數據處理和建模能力的軟件工程師和數據科學傢。本書假定讀者具備一定的Python編程基礎,但不需要深入的數學背景。我們將盡量在書中解釋必要的數學概念,以便讀者能夠理解算法的原理。 總之,本書將是一次充實而富有成效的學習旅程,你將在這段旅程中掌握利用Python進行數據科學研究和機器學習應用的關鍵技能。我們將帶你從數據的獲取、清洗、探索,到可視化,再到構建和評估各種機器學習模型,最終觸及深度學習的奧秘。這本書不是關於揭示代碼的隱藏威脅,而是關於解鎖數據中蘊含的巨大潛力,以及利用智能模型來驅動創新和解決問題。