Android rootkit developing environment
LGUnitedMobileDriver_S4981MAN38AP22_ML_WHQL_Ver_3.8.1.zip
안드로이드 rootkit 개발환경 구축과정 요약
// 여기는 윈도우즈에 구축
0. 루팅된 안드로이드폰 준비.
1. 폰에 해당하는 디바이스 드라이버 설치(LGUnitedMobileDriver_S4981MAN38AP22_ML_WHQL_Ver_3.8.1.exe)
2. ADB 설치를 위해 안드로이드 SDK 설치.
3. 폰에서 ADB 접속이 되도록 USB 디버깅을 활성화시켜놓아야함.
// 여기부터는 리눅스에 구축
1. 안드로이드 NDK 툴체인 다운로드 http://developer.android.com/tools/sdk/ndk/index.html
2. 해당 폰에 대한 커널소스 다운로드 https://wws.lg.com/global/support/opensource/opensourceList?types=NAME&search=lu6500
3. 폰에대한 커널소스 컴파일(다운로드한 소스상의 README 참조)
4. 폰의 커널소스디렉토리에서 make prepare && make modules_prepare
5. 4에서 CROSS_COMPILE 환경변수가 NDK ARM 크로스컴파일러의 경로를 가리켜야함
(export ARCH=arm && export TARGET_PRODUCT=bssq && export TARGET_MODEL=lu6500)
(export CROSS_COMPILE=/var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-)
make lu6500_android_defconfig
// 이제 루트킷 개발할 툴체인이 모두 준비됨
1. Makefile 작성(-fno-pic 옵션을 줘야함)
root@declspec-desktop:/var/www/android/rootkit# cat Makefile
obj-m += AndroidKeyLogger.o
CROSS_COMPILE = /var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
EXTRA_CFLAGS=-fno-pic
KERNEL_DIR ?= /var/www/android/kernel
all:
make EXTRA_CFLAGS=-fno-pic -C $(KERNEL_DIR) M=$(PWD) modules
rm -rf *.c~
rm -rf *.mod*
rm -rf *.o
clean:
make -C $(KERNEL_DIR) M=$(PWD) clean
(이때 TAB 구분 잘해줘야함.)
2. 환경변수 세팅
export ARCH=arm && export TARGET_PRODUCT=bssq && export TARGET_MODEL=lu6500 && CROSS_COMPILE=/var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
3. 이제부터 AndroidKeyLogger.c 소스코드 준비해놓고 make 하면됨!
* 참고로 일반 바이너리 arm 크로스컴파일을 위해서는 크로스컴파일러를 쓸때
include 경로와 lib 경로를 잡아주고, 그 외에도 crt~~.o 오브젝트 파일을 링커가 찾을수 있게 해줘야함.
아래처럼 설정했음
// object 파일들은 걍 현재경로에 복사해놓고
root@declspec-desktop:/var/www/android/app# ls
a compile.sh crtbeginS.o crtbegin_dynamic.o crtbegin_static.o crtendS.o crtend_so.o
a.c crtbegin.o crtbeginT.o crtbegin_so.o crtend.o crtend_android.o
// include, lib 경로들 잘 찾아줘야함.
root@declspec-desktop:/var/www/android/app# cat compile.sh
/var/www/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc-4.4.3 -I/var/www/android/ndk/android-ndk-r8e/platforms/android-3/arch-arm/usr/include -L/var/www/android/ndk/android-ndk-r8e/platforms/android-8/arch-arm/usr/lib -static -o a a.c