file: def_example1.apk

sha1: 1350f7c84710e373f97e27d6880ca9a6ed065d4a

md5: a0aec2a7e85b86130c059c0c48d16050

Package Info

  • app name, package name, icon
  • activities, receivers, services
  • permissions, intents


1) Pacake name: com.google.android.coremms  --> google? 합법적으로 보임


2) permission

  • RECEIVE_BOOT_COMPLETED  --> 부팅시 코드를 실행
  • SEND_SMS  --> text 메시지 전송 가능
  • RECEIVE_SMS  --> text 수신 시 코드 실행

3) App name: Chinese "短信息服务" --> English "Short Message Service"


4) icon: @drawable/ic_launcher


Android Manifest

  • No activities! (hides from user)


1) "opti" meta-data  --> 나중에 확인


2-3) 부팅 시 MessageReceiver 호출, SMS 수신  --> entry point


4) "acceiver"? typo?  --> 세부정보는 "who" 로 이어짐


Strings

1
grep -'^ *const-st' smali | sed 's/.*const-string [vp][0-9]\{1,\},//' | sort | uniq
cs






Quick Tip - Convert \u


Signatures

1
keytool -printcert -jarfile def_example1.apk
cs



1) 

  • Unless compromised, this is who made it
  • Collect apps and see which others have this
  • Search VirusTotal Intelligence for "hezhilong"

2) 이 사람은 모든 것을 상세하게 기입했다. 심지어 중국 국가 코드까지


Creation Dates

  • APK 파일은 2014년 4월 11일에 만들어졌음 (아마도)
  • 프로세스 제작이 하루 이상 소요됨 --> 빠름..? 복사/붙여넣기?
  • build process / 작동방식에 대해 자세히 알아보기
  • Can be used to correlate with other samples


Class names


먼저 Configs.class 를 살펴보기


데이터 값을 알 수 없음. 

데이터 값을 확인하기 위해 BytesUtils.class 를 확인해보면 암호화되어 있음.


decryption


1
2
3
4
5
6
7
8
= [1051171171135948481161121051184610410147100112110]
result = []
 
for i in range(0len(a)):
    data = a[i]-1
    result.append(data)
 
print "".join(map(chr, result))
cs



유용한 툴 소개

simplify.jar

https://github.com/CalebFenton/simplify


1
java -jar simplify-1.2.0.jar -it "Configs;-><clinit>" def_example1.apk
cs