Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86381103

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

移動應用程序經常處理敏感數據,這是許多網絡犯罪分子的主要目標。在處理此類數據時,開發人員必須盡最大努力確保其受到保護。提高移動應用程序安全性的一種方法是執行移動應用程序滲透測試。

要找到應用程序代碼中的缺陷,開發人員至少需要逆向工程和滲透測試Android 應用程序方面的基本技能。在本文中,我們討論了攻擊者可能用來入侵您的應用程序的不同方法。我們還解釋了來自開放Web 應用程序安全項目(OWASP) 移動安全測試指南(MSTG) 的挑戰如何幫助您進行Android 應用程序的移動滲透測試,以及您可以使用哪些工具來解決這些問題。

在本文中,我們將討論如何滲透測試Android 應用程序以及使用哪些工具來提高移動應用程序的安全性。本文將對希望更多了解移動安全滲透測試服務並提高應用安全性的Android開發者有所幫助。

通過逆向工程加強應用程序的安全性Android 是一個對開發人員非常友好的操作系統(OS)。與其他移動操作系統不同,Android 是一個開源平台,您可以在該平台上激活開發人員選項和旁加載應用程序,而無需跳過太多步驟。此外,Android 允許開發人員在Android 開源項目中探索其源代碼,並根據需要修改操作系統功能。

但是,使用Android 應用程序也意味著您需要處理Java 字節碼和Java 本機代碼。一些開發人員可能認為這是一個缺點。 Android 開發人員使用Java Native Interface來提高應用程序性能、支持遺留代碼,當然,也會讓那些試圖查看其應用程序內部的人感到困惑。

在構建移動應用程序時,開發團隊的首要任務之一是確保高水平的數據安全性。開發人員應盡最大努力防止網絡犯罪分子獲取用戶的敏感信息。

有些人嘗試在第三方解決方案的幫助下提高其移動應用程序的安全性。但是,在使用第三方產品時,正確配置它們至關重要。配置錯誤或使用不當的解決方案將無濟於事,無論它多麼昂貴。

其他人則試圖將應用程序的功能和數據隱藏在本機層中。在某些情況下,他們構建Android 應用程序的方式是在本機層和運行時層之間跳轉執行。

也有開發人員使用更複雜的方法,例如逆向工程。在確保適當保護應用程序的敏感數據時,此技術非常有用。這就是為什麼開發人員最好至少具備一些逆向工程的基本技能:

解壓APK 文件

修補.smali 文件

修補.so 庫

使用調試工具

使用框架進行動態代碼分析

有了這些技能和專業知識,移動應用程序開發人員將有更好的機會檢測到可能被攻擊者利用的代碼缺陷。例如,為了侵入您的應用程序,黑客可能會使用質量保證(QA) 專家在測試應用程序的安全性和性能時使用的相同技術:

動態分析用於尋找在應用程序運行時操作應用程序數據的可能方法。例如,黑客可能會嘗試通過在登錄期間跳過多因素代碼檢查來破解您的應用程序。

靜態分析用於研究已經打包的應用程序並檢測代碼弱點,而無需直接訪問源代碼。通過靜態分析,我們不像在動態分析期間那樣查看應用程序在運行時的行為。例如,黑客可能會使用靜態分析來檢測弱加密算法的使用。要了解如何解決此類問題,請瀏覽我們關於Android 應用程序中的加密方法的文章。

開發人員有自己的方法來防止這些類型的代碼分析。例如,可以對源代碼進行模糊處理以防止其受到靜態分析:開發人員可以更改應用程序方法和類的名稱、添加對其他函數的調用以及加密代碼行。

注意:雖然代碼混淆有助於加強應用程序代碼以抵禦基於靜態分析的攻擊,但它也增加了引入新錯誤的風險。最好的逆向工程工具可以幫助您查看代碼是否已被混淆並確保對應用程序進行全面測試。

還有幾種方法可以保護移動應用程序免受動態代碼分析。特別是,開發人員可以:

阻止應用程序在有根設備上啟動

使用阻止應用程序以開發人員模式啟動並拒絕連接到動態分析框架(如Frida)的庫

應用額外的保護措施來防止重新打包和退出應用程序。

這些任務對於有經驗的逆向工程師來說很容易。經驗不足的開發人員在使用逆向工程技術滲透測試Android 應用程序之前可能需要一些練習。值得慶幸的是,OWASP為培訓和提高您的軟件逆向工程技能提供了許多挑戰。

在本文的後面,我們將針對兩個OWASP 移動安全測試指南CrackMe挑戰提供分步解決方案:UnCrackable App for Android Level 1和UnCrackable App for Android Level 2。解決這些挑戰將幫助您更好地了解如何改進移動應用程序的滲透測試並增強Android 解決方案的安全性。我們建議您在繼續閱讀之前嘗試自己解決它們。但首先,讓我們看一下對Android 應用程序進行逆向工程所需的工具和框架。

Android逆向工程的基本工具集在開始為Android 開發人員解決OWASP CrackMe 挑戰之前,您需要確保有兩件事:

了解Android 環境。您需要具有使用Java 和Linux 環境以及使用Android 內核的經驗。

正確的工具集。使用在Java 虛擬機(JVM) 上運行的字節碼和本機代碼需要特定的工具。

在本節中,我們列出並簡要描述了可用於解決OWASP CrackMe 挑戰和提升逆向工程技能的工具。

注意:出於本文的目的,我們僅選擇了免費或具有免費試用版的工具和框架。

Android Studio — Android 的官方集成開發環境(IDE)。這是構建原生Android 應用程序的主要IDE;它包括APK 分析器、代碼編輯器、可視化佈局編輯器等。特別是,我們將使用命令行Android 調試橋(adb) 工具。

Apktool — 這是一款流行的免費工具,用於對封閉的、第三方的和二進制的Android 應用程序進行逆向工程。它可以將Java 字節碼反彙編為.smali 格式,以及從APK 存檔中提取和反彙編資源。此外,您還可以使用Apktool 來修補和更改清單文件。

注意:應用程序代碼存儲在APK 文件中,其中包含帶有Dalvik 二進製字節碼的.dex 文件。 Dalvik 是一種Android 平台可以理解但人類完全無法讀取的數據格式。因此,為了讓開發人員能夠使用.dex 文件,需要將它們轉換為(和自)可讀格式,例如.smali。

Cutter — 一個開源跨平台框架,提供可定制、易於使用的逆向工程平台。該框架由radare2 提供支持,並得到大量專業逆向工程師社區的支持。

Hex Workshop Editor — 一套流行的Windows 十六進制開發工具。該工具集使編輯二進制數據幾乎與處理常規文本文檔一樣簡單。 Hex Workshop Editor 是商業軟件,但有免費試用版。

注意: Hex Workshop Editor 只能在Windows 上使用。如果您使用的是基於Linux 的虛擬機,則可以選擇任何Linux 十六進制編輯器。

dex2jar — 將字節碼從.dex 格式轉換為Java 類文件的免費工具。

JD-GUI — Java Decompiler 項目創建的工具之一。這個圖形實用程序使Java 源代碼可讀,將其顯示為Java 類文件。

Mobexler — 用於iOS 和Android 滲透測試的基於Elementary 的虛擬機。 Mobexler 附帶一組預安裝的工具和腳本,用於測試移動應用程序的安全性,包括此列表中的一些工具。

Java 調試器(jdb) — 用於調試Java 類的免費命令行工具。

注意:在Android應用中,調試可以分兩層進行:

马云惹不起马云 運行時層——Java 運行時調試可以在Java 調試有線協議(JDWP)的幫助下進行。

马云惹不起马云 Native 層——可以基於ptrace進行Linux/Unix 風格的調試。

JDWP 是一種標準調試協議,可幫助調試器與目標JVM 進行通信。所有流行的命令行工具和Java IDE 都支持此協議,包括Eclipse、JEB、IntelliJ,當然還有jbd。

JDWP 調試器允許您探索Java 代碼、在Java 方法中設置斷點以及檢查和修改局部變量和實例變量。它通常用於調試不會多次調用本機庫的常規Android 應用程序。

GNU 調試器(gdb) — 一種用於分析應用程序代碼的有用工具。

我們使用這些工具解決了Android 應用程序的兩個逆向工程挑戰。在下一節中,我們將為您提供基於標準OWASP 挑戰的基本Android 滲透測試教程。