偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

跟我把Kali Nethunter編譯至任意手機(jī)

安全 終端安全
Kali Nethunter是一款用于安全研究的手機(jī)固件包,可以使Android設(shè)備增加“無線破解”、“HID攻擊”、“偽造光驅(qū)”等的硬件功能以及metasploit等軟件工具,目前官方只支持少量的Android手機(jī),然而,通過重新編譯Kali Nethunter源代碼,可以將其編譯到其他型號的手機(jī)上。

Kali Nethunter是一款用于安全研究的手機(jī)固件包,可以使Android設(shè)備增加“無線破解”、“HID攻擊”、“偽造光驅(qū)”等的硬件功能以及metasploit等軟件工具,目前官方只支持少量的Android手機(jī),然而,通過重新編譯Kali Nethunter源代碼,可以將其編譯到其他型號的手機(jī)上。

本文將以O(shè)neplus one為例講解Kali Nethunter代碼的移植方式,同時也在三星的i9100g手機(jī)上測試成功。

跟我把Kali Nethunter編譯至任意手機(jī) 

 

0x00 Kali Nethunter架構(gòu)分析

Kali Nethunter大體分為三個部分

定制過的手機(jī)內(nèi)核:由于需要使用OTG外接usb網(wǎng)卡、用手機(jī)模擬HID設(shè)備、用手機(jī)模擬CDROM光驅(qū),必須對手機(jī)內(nèi)核進(jìn)行修改添加對應(yīng)的驅(qū)動,以及patch相關(guān)的代碼,如果沒有這一部分修改過的內(nèi)核,Kali Nethunter將無法使用與硬件相關(guān)的所有功能

chroot環(huán)境的文件系統(tǒng):所有相關(guān)的軟件程序以ARM架構(gòu)的Kali為基礎(chǔ)集成在一個文件系統(tǒng)內(nèi),通過linux的chroot功能可以在Android中跳轉(zhuǎn)至Kali文件系統(tǒng),然后把內(nèi)核相關(guān)的東西mount進(jìn)kali的文件系統(tǒng),之后就可以在這個chroot后的Kali中執(zhí)行對應(yīng)的命令了

用于提供界面的APK手機(jī)APP,僅僅是作為UI界面起展示作用,實(shí)際是通過調(diào)用chroot的Kali中的命令來實(shí)現(xiàn)所有功能的,當(dāng)然這些APP也提供了一鍵掛載并啟用Kali chroot的功能

其中修改內(nèi)核要求手機(jī)內(nèi)核代碼必須開源,盡管內(nèi)核代碼根據(jù)GPL協(xié)議必須開源,國內(nèi)某些手機(jī)仍然不公開其內(nèi)核源代碼,這也是Kali Nethunter僅支持Oneplus、三星和谷歌Nexus的原因

0x01 準(zhǔn)備CM 12.1源碼以及相關(guān)環(huán)境

首先,我們?yōu)榱撕喕薷膬?nèi)核的過程,可以直接編譯一份CyanogenMod 12.1的代碼,其中就包括了對應(yīng)機(jī)型(Oneplus one、三星i9100g)的內(nèi)核代碼。而且鑒于Kali Nethunter本身采用的就是CM 12.1的ROM,為了避免其他ROM中可能存在的兼容性問題,建議選擇CyanogenMod支持的手機(jī)來進(jìn)行移植

你可以參考CyanogenMod官方wiki上對應(yīng)機(jī)型的編譯說明,這里在Ubuntu上以O(shè)neplus和i9100g為例演示編譯過程

親測編譯時硬盤至少需要100G可用空間,虛擬機(jī)至少需要4GB內(nèi)存,不要問我如果達(dá)不到要求會發(fā)生什么……全是眼淚啊

在開始配置環(huán)境之前,先提示大家后文會有簡化的環(huán)境配置方式,不過建議大家還是按部就班地用“官方”方式配置,因?yàn)閷鞢M可能會有新的版本出現(xiàn),而官方配置方式可以獲取到最新的代碼

比如對于Oneplus one的官方示范:http://wiki.cyanogenmod.org/w/Build_for_bacon

sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev

liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop

openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev

然后64位系統(tǒng)還需要:

sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

如果遇到軟件包不存在,可以apt-cache search一下包名,看看是不是改名字了

之后同步Android代碼(代碼從google上拿,該怎么訪問google是你自己要解決的問題,下同,不再提示)

$ mkdir -p ~/bin
$ mkdir -p ~/android/system
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

然后把~/bin加進(jìn)PATH中:

添加到~/.profile中

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

然后配置repo

$ cd ~/android/system/
$ repo init -u https://github.com/CyanogenMod/android.git -b cm-12.1

然后有兩種方式可以獲取特定設(shè)備(Oneplus One)的相關(guān)代碼文件,一種是按照CyanogenMod Wiki上的做,另一種可以去百度(來自一加社區(qū)的《玩機(jī)組出品,CyanogenMod12編譯教程》),請自行百度自己設(shè)備的代碼獲取方式

mkdir ~/android/cm/.repo/local_manifests
gedit ~/android/cm/.repo/local_manifests/local_manifests.xml

添加

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <manifest> 
  3. <project name="CyanogenMod/android_device_oneplus_bacon" path="device/oneplus/bacon" remote="github" /> 
  4. <project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" /> 
  5. <project name="CyanogenMod/android_device_oppo_msm8974-common" path="device/oppo/msm8974-common" remote="github" /> 
  6. <project name="CyanogenMod/android_device_oppo_common" path="device/oppo/common" remote="github" revision="cm-12.0" /> 
  7. <project name="CyanogenMod/android_kernel_oneplus_msm8974" path="kernel/oneplus/msm8974" remote="github" /> 
  8. <project name="TheMuppets/proprietary_vendor_oppo" path="vendor/oppo" remote="github" /> 
  9. <project name="TheMuppets/proprietary_vendor_oneplus" path="vendor/oneplus" remote="github" /> 
  10. <project name="CyanogenMod/android_frameworks_opt_connectivity" path="frameworks/opt/connectivity" remote="github" revision="cm-11.0" /> 
  11. </manifest> 

 

之后就可以開始同步Android代碼了

$ repo sync

注意,到這步之后不需要再get prebuilt了,因?yàn)槲覀冇玫氖荂M 12.1,老版本的CM才需要get prebuilt

之后就是編譯了(先不要修改內(nèi)核,確保能夠編譯成功),進(jìn)入android/system文件夾

source build/envsetup.sh

使用CCACHE可以加快編譯速度,但會吃掉硬盤空間,為了速度推薦設(shè)置為50G到100G之間,非必須

export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G

之后就可以開始編譯了,bacon是設(shè)備名

$ croot
$ brunch bacon

編譯成功后將會生成cm-12.1-20151127-UNOFFICIAL-bacon.zip,這個就是ROM的刷機(jī)包了。#p#

0x02 簡易的CM 12.1編譯環(huán)境及代碼

所有環(huán)境配置問題都可以用Woobuntu系統(tǒng)來解決,直接安裝Woobuntu后內(nèi)部已經(jīng)集成了Android編譯環(huán)境(包括adb)

代碼我給大家打包好了,27個G,解壓縮就好(已經(jīng)把內(nèi)核patch過了),在Woobuntu中編譯命令如下:

tar -jxvf cm12_bacon_source.tar.bz2
cd android/system/
sudo su root
source build/envsetup.sh
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 20G
croot
brunch bacon

簡單解釋一下,由于壓縮檔的文件屬主是我,而不是你,部分文件權(quán)限會有問題,所以建議直接root權(quán)限編譯(其實(shí)更優(yōu)雅的方式是chown -R,只不過27個G代碼都來chown一遍實(shí)在受不了),sudo時會要求輸入你的密碼,而我CCACHE只用了20G是因?yàn)槲业挠脖P實(shí)在太小,我最后親自從安裝Woobuntu開始測試了一遍,確認(rèn)可以編譯成功。

簡而言之,這個簡化版本只需要你自己處理設(shè)備相關(guān)代碼就好了,比如說i9100g就只需要重新按照wiki設(shè)置breakfast i9100g和extract-files(如果網(wǎng)上能搜到更簡單的方式更好),之后brunch i9100g即可。

0x03 修改Android內(nèi)核

在修改Android內(nèi)核時,我們需要交叉編譯ARM架構(gòu)的代碼

cd到對應(yīng)機(jī)型的kernel文件夾下,例如演示的oneplus內(nèi)核目錄為 alkaid@alkaid-VirtualBox:~/android/system/kernel/oneplus/msm8974

export ARCH=arm

之后在arch/arm/configs文件夾里面找到cm所用的defconfig,然后如下所示

make cyanogenmod_bacon_defconfig

之后就可以make menuconfig了

make menuconfig

然后就是根據(jù)Nethunter的github WIKI上的說明自由選擇驅(qū)動程序了,不過我只需要ATH9K的芯片驅(qū)動,所以直接在Device drivers -> Network device supports -> Wireless lan 里面選中Atheros Wireless Cards ,如果你使用其他芯片的無線網(wǎng)卡,請自己去選中對應(yīng)的驅(qū)動程序

然后在networking support -> Wireless 里面把Generic IEEE 802.11 Networking Stack (mac80211) 選中

由于Oneplus自己默認(rèn)選中了OTG驅(qū)動,如果您為別的機(jī)型編譯,請檢查device driver里面usb的otg選項(xiàng)有沒有選中

設(shè)置完畢后保存退出

make savedefconfig
cp defconfig arch/arm/configs/cyanogenmod_bacon_defconfig
make mrproper

您如果是第一次嘗試,可以重新編譯一遍CM看看有無錯誤,然后我們就可以開始patch內(nèi)核了

wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch
patch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch

然后到https://github.com/pelya/android-keyboard-gadget里面尋找自己內(nèi)核版本的patch,這里是3.4內(nèi)核

wget https://raw.githubusercontent.com/pelya/android-keyboard-gadget/master/kernel-3.4.patch
patch -p1 < kernel-3.4.patch

如果不出意外的話,這個patch一定會報錯,因?yàn)閗ernel代碼是不斷更新著的,不過別擔(dān)心,我們可以手動去patch

報錯:

alkaid@alkaid-VirtualBox:~/android/system/kernel/oneplus/msm8974$ patch -p1 < kernel-3.4.patch
patching file drivers/usb/gadget/Makefile
patching file drivers/usb/gadget/android.c
Hunk #1 succeeded at 75 (offset 1 line).
Hunk #2 succeeded at 2192 with fuzz 2 (offset 101 lines).
Hunk #3 FAILED at 2156.
Hunk #4 FAILED at 2481.
2 out of 4 hunks FAILED -- saving rejects to file drivers/usb/gadget/android.c.rej
patching file drivers/usb/gadget/f_hid.c
Hunk #7 succeeded at 403 (offset -9 lines).
Hunk #8 succeeded at 422 (offset -9 lines).
Hunk #10 succeeded at 594 (offset -4 lines).
Hunk #11 succeeded at 614 (offset -6 lines).
Hunk #12 succeeded at 662 (offset -8 lines).
Hunk #13 succeeded at 713 (offset -8 lines).
patching file drivers/usb/gadget/f_hid.h
patching file drivers/usb/gadget/f_hid_android_keyboard.c
patching file drivers/usb/gadget/f_hid_android_mouse.c
alkaid@alkaid-VirtualBox:~/android/system/kernel/oneplus/msm8974$

可以看到是android.c第3和第4處patch失敗,我們?nèi)ナ謩觩atch

跟我把Kali Nethunter編譯至任意手機(jī)

 

前兩處都已經(jīng)patch成功了,所以跳過就好了

跟我把Kali Nethunter編譯至任意手機(jī)

 

解釋一下:左邊是patch代碼,右邊是目前的android.c,patch的意思是要在&uasp_function,下面加一個&hid_function,,第四處也去找一下用大腦找到位置敲上代碼即可

然后就是重新編譯CM,然后生成的刷機(jī)包就是Nethunter超強(qiáng)定制內(nèi)核的CM 12.1了

i9100g編譯時直接成功,而Oneplus則會報個錯,是跟usb驅(qū)動有關(guān)的,找到報錯位置代碼,然后發(fā)現(xiàn)是一個結(jié)構(gòu)體還有一個函數(shù)在使用前沒有定義,于是我無比瀟灑地把這個調(diào)用函數(shù)的代碼!刪!掉!了!,經(jīng)測試刪掉該代碼不影響手機(jī)正常功能,Nethunter功能也經(jīng)過測試非常穩(wěn)定。#p#

0x04 編譯Kali Nethunter的rootfs

在Kali Nethunter的github頁面內(nèi)有詳細(xì)的說明,強(qiáng)烈建議在Kali中進(jìn)行Nethunter的編譯

mkdir ~/arm-stuff
cd ~/arm-stuff
git clone https://github.com/offensive-security/gcc-arm-linux-gnueabihf-4.7
export PATH=${PATH}:/root/arm-stuff/gcc-arm-linux-gnueabihf-4.7/bin
git clone https://github.com/offensive-security/kali-nethunter
cd ~/arm-stuff/kali-nethunter
./build-deps.sh
./androidmenu.sh

在編譯時選擇僅編譯rootfs(因?yàn)槲覀円约翰傩膬?nèi)核的事情了)

0x05 刷機(jī)測試

如果你不會刷機(jī),請先百度一下如何正常刷機(jī),比如unlock bootloader啦,TWRP啦,這些百度去吧

刷機(jī)順序?yàn)椋合人yanogenMod,再刷Kali Nethunter的rootfs

下圖是在測試HID攻擊的i9100g

跟我把Kali Nethunter編譯至任意手機(jī)

 

檢查各項(xiàng)功能:

檢查DriveDroid能否模擬USB光驅(qū)

檢查UsbKeyboard能否偽造鼠標(biāo)和鍵盤設(shè)備

插上OTG和USB無線網(wǎng)卡,看看能不能使用Wifite破解無線密碼

0x06 可能遇到的問題

在移植至三星i9100g手機(jī)時,由于手機(jī)內(nèi)存儲空間不夠大(Kali Nethunter刷機(jī)方式要求至少有2GB的可用空間),因此一直刷機(jī)失敗,當(dāng)終于定位到問題所在后,最終決定采用其他的方式加載Kali Nethunter的rootfs。首先把kali nethunter的rootfs編譯出來,然后做成一個img磁盤鏡像文件,之后把這個img文件放在sd卡中,動態(tài)掛載到/data/local/kali-armhf中,這樣就解決了內(nèi)存儲空間不夠的問題

如果編譯內(nèi)核出錯,您在debug的時候可以只編譯內(nèi)核,toolchains在prebuilt文件夾里面,自己設(shè)置cross_compile變量吧(常見是把亂選的驅(qū)動清除掉,能解決絕大部分報錯)

0x07 后話

以后我們就可以開始玩耍Nethunter了,比如把整個WooyunWifi都移植到手機(jī)上,再做上離線劫持釣魚的功能……不過這些都是編譯完Nethunter之后的事情了

結(jié)尾圖片:在手機(jī)上的WooyunWifi,開啟了熱點(diǎn)用于釣魚

跟我把Kali Nethunter編譯至任意手機(jī)

 

責(zé)任編輯:藍(lán)雨淚 來源: 烏云知識庫
相關(guān)推薦

2015-06-24 09:53:05

2017-03-16 18:50:59

2010-06-09 11:27:46

Eclipse UML

2010-11-16 14:17:32

IBM超級計算機(jī)

2015-11-06 14:55:00

2020-08-28 10:01:08

AndroidPC手機(jī)屏幕

2015-05-29 10:39:31

iOS漏洞手機(jī)安全

2024-07-18 12:41:49

2009-02-18 20:03:47

華為手機(jī)Android

2011-04-04 12:05:04

Android谷歌

2012-06-25 14:12:24

2020-12-14 13:51:43

HarmonyOS鴻蒙DevEco Stud

2009-07-28 15:38:14

aspx文件編譯ASP.NET

2013-06-03 09:40:53

內(nèi)存消耗性能優(yōu)化優(yōu)化技巧

2012-03-14 21:09:14

HTC

2011-12-27 20:36:39

三星

2015-02-28 15:42:41

短信轉(zhuǎn)發(fā)關(guān)鍵詞

2014-06-03 10:40:34

2010-09-29 13:16:01

OTAJ2ME

2025-02-18 11:02:01

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號