목록보안 기술/Android (7)
앵하니의 더 나은 보안

InsecureShopApp? InsecureShopApp은 SourceZeroCon2021에 발표했던, 취약하게 설계된 어플리케이션이다. 딥링크 취약점 데모 앱으로 InsecureShopApp을 설치해서 공격을 시연해봤는데 생각보다 이 앱에 테스트해 볼 수 있는 공격들이 많았다. 그래서 그 공격을 하나하나 뜯어 시연해보려 한다. 각 취약 항목 리스트는 insecureshop docs를 참고했다. 하드코딩 된 인증정보 로그인 정보가 없어 로그인할 수 없으니, 로그인 정보를 획득해보자 1. androidmanifest.xml 파일에서 메인액티비티 확인 2. 메인액티비티 ProductlistActivity에서 prefs 값으로 Username이 없는 경우 LoginActivity 호출 3. 그리고 Login..

모 금융 어플리케이션의 취약점 진단을 위해 루팅탐지를 우회 해야했는데, 그럴려면 native 소스를 확인해야했다. 그래서 base.apk에서 so파일들을 추출하려 했더니 그 안에는 lib 폴더가 없었다. 근데 또 마침 이상황에서 apktool을 사용한 디패키징도 assets의 이상한 dex파일 때문에 에러났다. 뭐 smali 버전 때문이라나 뭐라나 그래서 그냥 단말기의 /data/app 경로에서 lib폴더를 꺼내야겠다 싶어 단말기에서 lib 폴더에도 접근해봤더니, 거기에도 마찬가지로 so 파일들이 없었다. 그러곤 여차저차 삽질하다 어쨋든 단말기에 so파일이 있겠거니싶어 /data/app/어플리케이션/ 경로로 접근해 하위에 존재하는 모든 파일들을 adb pull로 추출하기로 했다. 그랬더니 그냥 4개 ap..

android 5~7.1 버전에서만 확인 가능하고 8버전 이상부터는 해당 되지 않는다. 8 이상 부터는 비트맵 정보가 네이티브 힙 영역에 존재하기 때문이라나 뭐라나 아무튼 방법은 다음과 같다. android studio에서 프로젝트 생성한 뒤 단말기 attach view > tool windows > profiler 탭 실행 sessions 에서 + 클릭해서 단말기 > 메모리 덤프 할 프로세스 attach (단말기의 ro.debuggable 이 1로 set 돼있어야함) ro.debuggable 값은 magisk hide props 로 설정할 수 있음 모니터에서 메모리 영역 클릭 > 오른쪽 클릭 후 java heap dump? dump java heap? 클릭 bitmap 클래스에서 이미지 확인할 인스턴스..

증권 어플리케이션 진단 시 작성해 사용했던 frida 스크립트를 공유한다. 증권사는 실시간 매수/매도 때문에 빠른 통신에 민감하다. 그래서 증권사 어플리케이션에서는 HTTP 통신이 아니라 TCP/IP 소켓 통신을 수행한다. 이에 따라 어플리케이션에서 TCP/IP 소켓 내용을 확인하기 위해선 소켓 관련 api를 후킹해 패킷을 확인해야한다. 근데 또 소켓 데이터는 byte array 자료형이라, byte array 자료형의 16진수와 그에 맵핑되는 문자들을 편하게 보기위해 show_byte 함수를 작성해 사용했다. 암/복호화 후킹은 덤 자바 api에서 사용하는 암/복호화 하는 동작은 모두 확인할 수 있다. var view_length = 16; var print_encrypt = 1; var print_so..