91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在KVM加速的Qemu中如何運行Android Oreo

發布時間:2021-12-17 11:48:39 來源:億速云 閱讀:270 作者:小新 欄目:數據安全

這篇文章主要介紹了在KVM加速的Qemu中如何運行Android Oreo ,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

將學習到如何在KVM加速的Qemu中運行Android Oreo (8.1.0) 系統,并通過我們的Linux x86_64主機上運行的Burp Suite。你將需要用到以下軟件:

Linux Mint 19.1 (x86_64) 作為我們的主機系統(內核中內置了KVM支持)

Qemu(https://github.com/qemu/qemu)

Android 8.1.0(https://www.fosshub.com/Android-x86.html)

Burp Suite community(https://portswigger.net/burp/communitydownload)

我通常會從源碼構建Qemu,通過git下載源碼就足以構建完整的模擬器。

$ mkdir build
$ cd build
$ ../configure
$ make
# make install

想要攔截來自Android的SSL流量,我們必須將自生成的證書添加到系統cacert store(稍后會對此進行介紹)。

我當前正在使用的是以下網絡腳本,用于我所有的qemu模擬。你也可以根據你的需要隨時進行更改。

在我們的Linux x86_64主機上,我們需要以下腳本:

/etc/qemu-ifup

#! /bin/sh
# Script to bring a network (tap) device for qemu up.
# The idea is to add the tap device to the same bridge
# as we have default routing to.

# in order to be able to find brctl
PATH=$PATH:/sbin:/usr/sbin
ip=$(which ip)

if [ -n "$ip" ]; then
ip link set "$1" up
else
brctl=$(which brctl)
if [ ! "$ip" -o ! "$brctl" ]; then
echo "W: $0: not doing any bridge processing: neither ip nor brctl utility not found" >&2
exit 0
fi
ifconfig "$1" 0.0.0.0 up
fi

switch=$(ip route ls |
awk '/^default / {
for(i=0;i<NF;i++) { if ($i == "dev") { print $(i+1); next; } }
}'
)

switch=br0

# only add the interface to default-route bridge if we
# have such interface (with default route) and if that
# interface is actually a bridge.
# It is possible to have several default routes too
for br in $switch; do
if [ -d /sys/class/net/$br/bridge/. ]; then
if [ -n "$ip" ]; then
ip link set "$1" master "$br"
else
brctl addif $br "$1"
fi
exit # exit with status of the previous command
fi
done

echo "W: $0: no bridge for guest interface found" >&2

以及網絡共享腳本(必須以root權限在qemu模擬器之前啟動)(在Debian/Ubuntu上通過運行sudo apt-get install uml-utilities bridge-utils命令獲取tunctl和brctl命令)

tunctl -t tap0 -u user
ifconfig tap0 up
brctl addbr br0
brctl setfd br0 0
ifconfig br0 10.0.2.2 netmask 255.255.255.0 broadcast 10.0.2.255 up
brctl addif br0 tap0 
ifconfig tap0 0.0.0.0
sysctl net.ipv4.ip_forward=1
iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE

一旦我們準備好了所有這些,現在我們來安裝最新的Android (x86_64),并運行它。

我們將在一個名為$ANDROID-QEMU的目錄中工作(你可以隨意調用它,我只是在這里給它分配了一個虛擬變量名),并創建一個10 Gigs大小的虛擬disk.img。同時,請確保你將Android iso移動到了該目錄

$ mkdir $ANDROID-QEMU
$ qemu-img create -f qcow disk.img 10G

接下來,我們將使用以下加載腳本運行安裝程序

qemu-system-x86_64 -enable-kvm -boot d -cpu host -m 2048 -hda disk.img -cdrom android-x86_64-8.1-r2.iso  -net nic -net tap

請確保你按如下方式設置了WiFi:

SSID: VirtWifi   (Define as maual)
no DHCP – Static IP  –  10.0.2.12
Gateway 10.0.2.2
DNS 8.8.8.8

在KVM加速的Qemu中如何運行Android Oreo

在進行了系統更新,網絡測試等工作后。現在我們已準備好了進入下一階段,在Android系統cacert目錄中安裝一個自定義CA,這樣我們就可以截獲Burp Suite中的傳出/傳入HTTPS流量。我所知道的唯一方法,是將自定義證書添加到/system/etc/security/cacert中的根文件系統中。

讓我們關閉模擬器(從Qemu關閉ACPI將觸發Android的關閉菜單)

讓我們先從Linux主機掛載Qemu qcow2 image。

# apt-get install libguestfs-tools 
# cd $ANDROID-QEMU
# mkdir img 
# guestmount -a disk.img -m /dev/sda1 img/
# cd img
# cd android-8.1-r2/
# ls -la
total 867056
drwxr-xr-x 3 root root 4096 Jul 7 22:11 .
drwxr-xr-x 5 root root 4096 Jul 7 22:11 ..
drwxrwx--x. 34 user user 4096 Jul 7 22:12 data
-rw-r--r-- 1 root root 1358699 Jul 7 22:11 initrd.img
-rw-r--r-- 1 root root 7437056 Jul 7 22:11 kernel
-rw-r--r-- 1 root root 1424814 Jul 7 22:11 ramdisk.img
-rw-r--r-- 1 root root 877621248 Jul 7 22:11 system.sfs

這里我們重點關注system.sfs文件,因為它包含了我們需要的系統cacert文件

# cp system.sfs ../..        // we are copying the system.sfs away 
# cd ../..
# umount img
# mkdir SYS
# mv system.sfs SYS
# cd SYS
# unsquashfs system.sfs    // extracting the system.sfs 
# cd squashfs-root
# ls -la 
total 2066844
drwxrwxrwx 3 user user 4096 Jul 8 21:42 .
drwxr-xr-x 3 root root 4096 Jul 8 21:40 ..
-rw-r--r-- 1 user user 2318401536 Jul 8 21:43 system.img
$ANDROID-QEMU/SYS/squashfs-root# file system.img 
system.img: Linux rev 1.0 ext4 filesystem data, UUID=da594c53-9beb-f85c-85c5-cedf76546f7a, volume name "system" (needs journal recovery) (extents) (large files)

讓我們在這里創建一個名為img的新掛載目錄

# mkdir img
# mount -o loop system.img img 
# cd img 
# ls -la
total 180
drwxr-xr-x. 17 root root 4096 Jan 1 1970 .
drwxrwxrwx 3 user user 4096 Jul 8 21:42 ..
drwxr-xr-x. 43 root root 4096 Jun 12 21:33 app
drwxr-xr-x. 3 root 2000 8192 Jun 12 21:33 bin
-rw-------. 1 root root 3116 Jun 12 18:56 build.prop
-rw-r--r--. 1 root root 74747 Jun 12 19:24 compatibility_matrix.xml
drwxr-xr-x. 11 root root 4096 Jun 13 11:10 etc
drwxr-xr-x. 2 root root 4096 Jun 13 06:10 fake-libs
drwxr-xr-x. 2 root root 4096 Jun 13 06:10 fake-libs64
drwxr-xr-x. 2 root root 8192 Jun 12 18:36 fonts
drwxr-xr-x. 5 root root 4096 Jun 13 06:12 framework
drwxr-xr-x. 7 root root 12288 Jun 13 10:35 lib
drwxr-xr-x. 5 root root 12288 Jun 13 06:10 lib64
drwx------. 2 root root 4096 Jan 1 1970 lost+found
-rw-r--r--. 1 root root 2946 Jun 12 19:24 manifest.xml
drwxr-xr-x. 3 root root 4096 Jun 12 18:56 media
drwxr-xr-x. 52 root root 4096 Jun 12 21:38 priv-app
drwxr-xr-x. 8 root root 4096 Jun 12 18:56 usr
drwxr-xr-x. 7 root 2000 4096 Jun 12 21:25 vendor
drwxr-xr-x. 2 root 2000 8192 Jun 12 21:32 xbin

現在,我們終于進入到了Android rootfs中,現在讓我們添加自定義證書。

我們將通過OpenSSL創建一個自定義證書,并將其導入Burp放置到Andriod中。

$ cd $CERTIFICATE-LOCATION    //lets create some dummy cert directory
$ openssl req -x509 -days 730 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca
$ openssl rsa -in server.key -inform pem -out server.key.der -outform der
$ openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der -nocrypt
$ openssl x509 -inform der -in ca.der -out ca.pem
$ openssl x509 -inform PEM -subject_hash_old -in ca.pem | head -1
Check the hash value and change accordingly
$ cp ca.pem abcdefg1.0
$ openssl x509 -inform PEM -text -in ca.pem -out /dev/null>> abcdefg1.0
And move to the extracted image on Android 
# mv abcdefg1.0 $ANDROID-QEMU/SYS/squashfs-root/img/etc/security/cacerts

現在,讓我們把所有這些都整合到一起

首先,卸載system.img

# cd $ANDROID-QEMU/SYS/squashfs.root/
# umount img 
# rm -rf img
# cd ..
# mkdir BACKUP
# mv system.sfs BACKUP/                          // backup the original system.sfs 
# mksquashfs squashfs-root system.sfs -b 131072  // pack everything back up
Lets mount the qemu2 image agin 

# cd $ANDROID-QEMU/
# guestmount -a disk.img -m /dev/sda1 img/
# cd img
# cd android-8.1-r2 
# rm system.sfs                   // remove the original system.sfs
# cp ../../SYS/system.sfs .       // copy over the new modified one 
# cd ../..
# umount img

現在我們已經準備就緒,首先讓我們為Android準備一個加載腳本

qemu-system-x86_64 -enable-kvm -boot c -cpu host -m 2048 -hda disk.img -cdrom android-x86_64-8.1-r2.iso -net nic -net tap

現在,我們可以通過執行上述操作來驗證修改后的Android啟動(將其保存為shell腳本用于后續的使用),如果一切順利,你應該可以看到Android界面。

在KVM加速的Qemu中如何運行Android Oreo

現在,讓我們在Linux機器上啟動Burp Suite并導入自定義生成的SSL證書,如下所示

在KVM加速的Qemu中如何運行Android Oreo

加載后,我們設置Burp Suite在br0接口@ 10.0.2.2上偵聽

在KVM加速的Qemu中如何運行Android Oreo

接下來,我們需要告訴Android用于WiFi連接的代理地址和端口,我們只需重新配置網絡即可(這里我花了一點時間才找到,代理設置被隱藏在了Oreo中)。

在KVM加速的Qemu中如何運行Android Oreo

在KVM加速的Qemu中如何運行Android Oreo

它必須看起來像上面一樣。

配置完成后,我們就可以通過模擬Android上的Burp Suite來攔截所有流量了!

在KVM加速的Qemu中如何運行Android Oreo

致謝:感謝Awakenned提供的方法

P.S 你可以嘗試通過內置的終端模擬器添加CA證書;通過su提升到root權限

在KVM加速的Qemu中如何運行Android Oreo

但是你會收到一條關于“read-only file system”的消息

在KVM加速的Qemu中如何運行Android Oreo

我不確定如何使用RW標簽在live system上remount。

也可以在Linux主機上安裝adb工具:

sudo apt-get install android-tools-adb android-tools-fastboot

我們使用nmap掃描遠程Android(IP分配為10.0.2.12)。

# nmap -sS -sV -vv 10.0.2.12
Starting Nmap 7.70SVN ( https://nmap.org ) at 2019-07-09 22:44 CEST
NSE: Loaded 44 scripts for scanning.
Initiating ARP Ping Scan at 22:44
Scanning 10.0.2.12 [1 port]
Completed ARP Ping Scan at 22:44, 0.24s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 22:44
Completed Parallel DNS resolution of 1 host. at 22:44, 0.00s elapsed
Initiating SYN Stealth Scan at 22:44
Scanning 10.0.2.12 [1000 ports]
Discovered open port 5555/tcp on 10.0.2.12
Completed SYN Stealth Scan at 22:44, 1.27s elapsed (1000 total ports)
Initiating Service scan at 22:44
Scanning 1 service on 10.0.2.12
Completed Service scan at 22:44, 11.02s elapsed (1 service on 1 host)
NSE: Script scanning 10.0.2.12.
NSE: Starting runlevel 1 (of 2) scan.
Initiating NSE at 22:44
Completed NSE at 22:44, 0.00s elapsed
NSE: Starting runlevel 2 (of 2) scan.
Initiating NSE at 22:44
Completed NSE at 22:44, 0.00s elapsed
Nmap scan report for 10.0.2.12
Host is up, received arp-response (0.0010s latency).
Scanned at 2019-07-09 22:44:40 CEST for 13s
Not shown: 999 closed ports
Reason: 999 resets
PORT STATE SERVICE REASON VERSION
5555/tcp open adb syn-ack ttl 64 Android Debug Bridge device (name: android_x86_64; model: Standard PC (i440FX + PIIX, 1996); device: x86_64; features: cmd,stat_v2,shell_v2)
MAC Address: 52:54:00:12:34:56 (QEMU virtual NIC)
Service Info: OS: Android; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/local/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.01 seconds
Raw packets sent: 1002 (44.072KB) | Rcvd: 1002 (40.072KB)

我們可以通過以下命令將adb啟動到遠程系統:

$ adb connect 10.0.2.12 $ adb shell
x86_64:/ $ id
uid=2000(shell) gid=2000(shell) groups=2000(shell),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc),3011(uhid) context=u:r:shell:s0
x86_64:/ $ su
x86_64:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:su:s0
x86_64:/ # uname -a
Linux localhost 4.19.50-android-x86_64-geeb7e76e5df5 #1 SMP PREEMPT Thu Jun 13 12:10:59 CST 2019 x86_64

但我們仍堅持使用RO文件系統。

x86_64:/ # uname -a
Linux localhost 4.19.50-android-x86_64-geeb7e76e5df5 #1 SMP PREEMPT Thu Jun 13 12:10:59 CST 2019 x86_64
x86_64:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 1020176 3372 1016804 1% /
/dev/loop1 2193072 2078004 115068 95% /system
/dev/block/sda1 10186756 1785628 8401128 18% /data
tmpfs 1020176 460 1019716 1% /dev
tmpfs 1020176 0 1020176 0% /mnt
none 1020176 0 1020176 0% /cache
/data/media 10186756 1785628 8401128 18% /mnt/runtime/default/emulated
/dev/block/vold/public:11,0 878742 878742 0 100% /mnt/media_rw/Android-x86_LiveCD
x86_64:/ # 
x86_64:/ # 
x86_64:/ # mount -o rw,remount /system 
'/dev/loop1' is read-only
x86_64:/ #

adb remount將/system部分置于可寫入的模式,默認情況下/system部分是只讀模式的。這個命令只適用于已被root的設備。

在將文件push到/system文件夾之前,必須先輸入命令adb remount。

adb remount'的作用相當于:

adb shell mount -o rw,remount,rw /system

感謝你能夠認真閱讀完這篇文章,希望小編分享的“在KVM加速的Qemu中如何運行Android Oreo ”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临汾市| 明水县| 神池县| 当涂县| 屏东县| 库尔勒市| 岳阳市| 广州市| 罗定市| 渑池县| 老河口市| 溧阳市| 扶余县| 彭州市| 和田县| 奉节县| 桃园市| 阜新市| 无棣县| 湖北省| 通道| 甘南县| 伊川县| 牙克石市| 太保市| 额济纳旗| 青龙| 永顺县| 瓦房店市| 大新县| 楚雄市| 阳西县| 邓州市| 东丰县| 临夏县| 安仁县| 邮箱| 南溪县| 永顺县| 屏东市| 阜新|