「黑客手機」免費送!

黑客嘛,隨身總要帶一些行頭,以滿足處處裝逼的慾望,於是他們發明了Kali Nethunter,把黑客精神隨身裝在手機里,行之所至,處處志之。行頭哪裡來?呃那個……其實寶寶不送……不送……黑客嘛,用自己的東西才叫牛逼,用別人的東西只能叫裝逼。所以我在這講一講怎麼把褲兜里刷微信玩遊戲的手機統統變成「黑客手機」。

這兩個月Cyanogen倒閉了,CM也改名叫LineageOS了,還緊跟潮流升級Android N(CM14.1)了,所有的工作都要推倒重來了。趁著重新來過的機會把以前的經驗總結一下,一邊給我手機升級一邊寫教程(不然我也懶得回憶一遍嘛),不用擔心,步驟都是通用的哦~

對讀者的要求

我們要在手機里裝Kali Nethunter,如果你的手機是net hunter官方支持的,那玩過手機,刷過機,卡刷zip包對你來說應該不在話下。

如果不支持的話,由於本篇文章涵蓋如何編譯自己的CM系統並將其內核整合到nethunter中。所以,還得懂點Linux,會在命令行下敲命令,如果自己編譯過軟體當然更好,畢竟它本質上就是這點東西。

如果你最後刷機成功了,那你更得懂點linux,因為這個軟體是沒有界面的,你可以當它是一個Linux的虛擬機,不會點的話,裝上又有啥用呢?

對手機的要求

我自己手機是一加3,如果你不是的話……

內核開源

雖然名義上講,步驟都是通用的,可首先,手機得給力。對手機最大的要求就是:內核代碼開源。有了它我們才能裝我們想要的網卡驅動、藍牙驅動balabala的。

我所知道的國內廠家有開放源碼的有:一加、華為、小米、中興。一加和小米在Github上有,華為中興要去官網自己找,其他的話……我也不了解放狗搜吧。這裡有個帖子可供參考(英文)。外國手機的話,我們聽過的大廠基本都能找到,親兒子肯定開源,三爽那麼多定製ROM的肯定也有,其他的也看上面那個帖子能找得到。

是否支持CM?

說實話哈,我只研究過怎樣在CyanogenMod下編譯整個安卓。因為它的編譯環境很好配,敲命令就行,而且我也沒心思研究整個系統,只想改個內核參數而已。

怎麼查支持不支持?[機型 cm]百度一下,有就是有,沒有就……沒辦法了。當然,如果像Google親兒子或者有AOSP AOKP等等別的ROM支持,用它的代碼做編譯環境也可以,命令都是大同小異。

如果CM沒有但是能找到內核源碼的話,也可以。應該說更方便。直接make就行,不用這個那個依賴啥啥的。nethunter的教程里涵蓋了如何編譯一個單獨的內核,這裡就不細講了。

nethunter官方支持

如果手機是官方支持的型號,直接擼他們的下載鏈接就行,然後像普通安卓刷機包一樣,卡刷進去,重啟就好了,不用往下看。

喔對了,餘弦大大還有一篇非常好的文章來講如何為一加3T卡刷Nethunter,傳送門:

知乎專欄

配置環境

系統要求:Linux(最好是Ubuntu)或者macOS。

安裝依賴

先安裝依賴,主要參考官方教程來輸命令。

要點:

對著自己的系統比如ubuntu15.04就輸 「For Ubuntu >= 15.04」這個標題下面的命令。只要安裝好JDK和package就好,USB配置可以忽略。

mac尤其注意

  1. 需要安裝位置的磁碟是區分大小寫的,在磁碟工具里能看到是不是,不區分的話,按照上面教程裡面的步驟新建一個sparseimage就好

  2. 在蘋果官網下載Xcode 7.3.1版本,最新版本不兼容,App Store讓你更新也不要更新。

  3. 需要額外安裝linux的程序, brew install coreutils findutils gnu-sed,我寫了個小腳本把他們加到PATH變數里,稍後發出來

下載安卓源碼

源碼因人而異,主要的命令還是參考這個教程。

搞到repo小程序

sudo wget https://storage.googleapis.com/git-repo-downloads/repo -O /usr/local/bin/repon

新建一個你喜歡的目錄

mkdir ~/androidncd ~/androidn

用repo小程序下載源碼

repo init -u https://github.com/LineageOS/android.git-b cm-14.1 --depth=1 --groups=all,-notdefault,-x86,-mips,-linux,-exynos5n

注意!上一句命令中的那個網址根據你的系統不同可以不一樣,那個網址是整個安卓系統的源碼索引,如果CM支持你的手機,那就不用變。其他的參數可以通過 repo init -h 看是什麼意思。

開始下載(大概18G左右)

repo syncn

準備內核源碼

每一次進入編譯環境都要準備一下環境變數,下面這一句每次編譯都要輸入

source build/envsetup.shn

然後下載手機的專屬代碼,手機不是oneplus3就換成別的手機的codename,比如小米3、4是cancro,小米5是gemini,紅米3是ido之類的。小米Github上有寫。

breakfast oneplus3n

修改內核參數

參考nethunter官方教程。

進入內核代碼目錄

cd kernel/oneplus/oneplus3nmake cleannexport ARCH=arm64nexport SRCARCH=arm64n

export這裡是個小坑,教程里沒有,但必須要加。如果你手機CPU是32位就把arm64換成arm,後文同理。不加這個無法正確配置defconfig

從已有配置文件為基礎開始,找arch/arm64/configs這個目錄下面的已有配置,比如cyanogenmod_oneplus3_defconfig

ls arch/arm64/configsnmake cyanogenmod_oneplus3_defconfign

默認參數就配置好了。

由於clang的一個bug,mac用戶需要將 scripts/kconfig/lxdialog/check-lxdialog.sh 下面的第12行改成這樣(-是原來的,+是改過的)

- if [ $? -eq 0 ]; thenn+ if [ $? -eq 0 -o -f /usr/lib/lib${lib}.${ext} ]; thenn

然後大家一起進入配置菜單。

make menuconfign

按教程配置。在menuconfig的菜單中,按上下導航,戳兩下esc返回上級目錄,y是選上一個複選框(將模塊編譯到內核里),n是取消,m是將一個模塊(比如驅動)編譯成一個單獨的小程序,用到時候再載入。如果遇到最後刷機後卡在第一屏的問題,就是內核體積太大了,此時將一些模塊用m獨立編譯。

特別選項:

教程圖裡的DVB for Linux選項已經沒了,現在改名叫Digital TV support

Customize DVB Frontends 之前 要先取消選擇Autoselect ancillary drivers (tuners, sensors, i2c, frontends)

然後取消frontends菜單里和tuner裡面,除了RTL2830以外的所有選項。

特別選項2:(可能只有我手機有這bug也可能都有)

如果在上面menuconfig里選了 HCI USB Driver,編譯通過不了的話,按這個patch改一下這個文件就好。另外,必須選中Bluetooth device drivers裡面的Atheros firmware download driver,btusb.c需要裡面的一個函數。

最後保存配置,內核配置就算完成了。

cp .config cyanogenmod_oneplus3_defconfignmake mrpropern

其他可選配置

如果在前面將一些模塊用m獨立編譯了,而且沒有關閉SELinux,接下來還要改一下SEPolicy。在 源碼/device/oneplus/oneplus3/sepolicy 目錄(oneplus/oneplus3換成設備型號)里,新建或者編輯 init.te 在結尾加上

allow init self:capability { sys_module };n

原來只需要fd use 和 system module_load就可以的,可我忘了策略咋寫的了。

如果想用USB keyboard,或者badUSB攻擊,而且和我一樣就是不想關SELinux,那就繼續改policy。按他的教程來。還要打上這個patch。

苟!

修改全部完成,cd退回源碼主目錄,運行命令單獨編譯內核與啟動鏡像。

mka bootimagen

等他轉轉完了,出來的字是綠色的,就是編譯成功。

適配Nethunter

另找一個目錄下載它的installer。

git clone https://github.com/offensive-security/kali-nethunter.git --depth 1ncd kali-nethunter/nethunter-installern

再下載nethunter的設備目錄,一路回車等下載就行。會得到大概1G大小的devices目錄。

./bootstrap.shn

用一個腳本將剛編譯出的Image.gz-dtb和模塊放到 devices/nougat/oneplus3cm 里放好,nougat是安卓版本,oneplus3cm的名字按nethunter教程起的。內核模塊要放在/lib/modules/[內核版本號]里,這樣modprobe才找得到。至於內核版本號呢,一句命令獲得,這句命令已經在我的腳本里了。[TODO:脫敏上傳]

strings $out/obj/KERNEL_OBJ/arch/arm64/boot/Image | grep -o 3.*cyan[^ ]* | head -n1n

最後編輯devices.cfg照葫蘆畫瓢把自己新適配的設備加上。

vim devices.cfgnpython build.py -d oneplus3cm -n -u -ns # nouget uninstaller_created no_supersun

然後就得到了我們嶄新的屬於自己的卡刷包!

將剛剛生成的熱乎的 update-nethunter-oneplus3cm-nougat-2017xxxx_xxxxxx.zip卡刷包扔到recovery里,直接update,再重啟,如果沒有報錯的話就沒問題了,all over!

開機打開Nethunter app,按照提示安裝 kali chroot 和其他的 metapackage,屬於你的黑客手機就完成了!

鼓掌!撒花!起床補個截圖。

關於安全

截上圖的時候,看到info裡面有這麼一句話,建議我們不要把它安裝在主力機上。想想也是,發PR的時候,我和NH的開發者提過SELinux的問題,我當時還努力了好久才讓SELinux可以正常工作,但他們也是興緻索然。為什麼我很注重這一點呢?

隨便找兩個知名國產流氓軟體,QQ,支付鴇

QQ:

讀取無線網卡硬體地址

試圖讀取/data中的ANR log,包含系統應用信息與崩潰後的stack trace

支付鴇:

又在讀trace log

這個你就牛逼了!讀取系統的鎖屏密碼(的文件屬性)(大概吧)!這個你真厲害誒!我給你滿分!

獲取CPU最大頻率?應該涉及身份認證吧,我只能這麼安慰自己了。裝了XPrivacy的話這裡會蹦警告的。

讀取自己的內存信息,debugfs里。可能用於檢測app安全性吧。(只能這麼安慰自己了)

所以說啥呢,能不搞事情,就不搞事情。 像這種軟體,又不能不用,也不能保准哪天他一個更新又想偷窺什麼。自律不如他律,這就是SELinux存在的意義。

封面:

KaliNethunter官方壁紙


推薦閱讀:

linux運維需要哪些技能?
為什麼我的kali2.0裝了VMwareTools還是 不能複製文件進去,屏幕也不能自動大小?
關於arp欺騙攻擊進行的一些實驗出現的疑惑?

TAG:KaliLinux | 信息安全 | 内核编译 |