-
CVE-2020-0041 분석 글 번역 및 정리 (+ Samsung Galaxy S10 RCE)Mobile/Android 2020. 10. 26. 02:03
AOSP 3월에 패치된 CVE-2020-0041 취약점에 대한 분석글이다. 원문은 Bluefrost Security LPE 정리글에서 확인할 수 있다. CVE-2020-0041은 Binder Transaction 과정에서 발생하는 Out of Bound취약점이다. 취약점이 발생하는 이유는 생각보다 간단한데, 인덱스 계산할 때 나눗셈 연산을 해야되는걸 곱셈 연산을 하면서 발생하게 된다. 이게 좀 웃긴게 트랜잭션을 정리하는 과정에서는 또 나눗셈으로 제대로 계산을 해준다. 밤새고 코딩했거나, 술 마시고 코딩했거나..ㅋㅋ 또한, 취약점이 발생하는 코드가 2019년 2월쯤 Qualcomm Kernel(msm)에만 추가되었기 때문에, Qualcomm기반의 Android 10.0 이상의 버전에서만 발생되는 취약점이며..
-
Android Kernel Exploit - BasicMobile/Android 2020. 4. 30. 00:18
이번 글에서는 Android Kernel Exploit의 기초를 다루려고 한다. Android Kernel을 대상으로 익스플로잇을 진행할 때, '주 타겟은 어떤 부분이고 어떤 방식으로 root권한을 획득하는지', '고려해야 하는 점은 무엇인지'와 같은 Kernel Exploit의 전반적인 부분들을 간단하게 다룰 것이다. Linux Privilege Escalation Linux Privilege Escalation(LPE)은 Android 커널 취약점으로 권한 상승, 즉 root권한을 획득하는 것을 말한다. Linux에서 root는 uid=0(root), gid=0(root) 인 SuperUser를 말하며, 모든 액세스 권한을 갖는다. AOSP에서는 LPE를 EOP(Elevation of privileg..
-
Github Commit에서 특정 로그 찾기 ( 특정 커밋 찾기 )ETC 2020. 4. 27. 00:09
대규모 프로젝트는 Commit수가 어마어마하게 많다. 여기서 특정 커밋을 수동으로 찾는다는 것은 엄청난 노동이다.. [그림 1]에서 보이는 하나 하나가 다 커밋된 로그들이다. 수 년전부터 몇 주전까지의 커밋 수를 따지면 적어도 수 백개는 된다. 여기서 우리가 원하는 커밋 시점을 찾으려면,,, 그리고 또 최근 순으로 정렬돼 있는게 아니라서 더 힘들다. 그래서 이번 글에서는 특정 커밋의 로그를 검색하는 방법을 정리하려고 한다. git log --oneline --grep "찾을 로그메시지" 위 명령어로 해당 git에 모든 로그를 찾아볼 수 있다. 먼저 git clone으로 레파지토리를 복제해온 뒤, 해당 디렉토리에서 위 명령어를 사용해서 특정커밋 해쉬를 알아내고 git reset --hard 명령어로 해당 ..
-
Android NDK - C Language Build ( Native )Mobile/Android 2020. 4. 24. 00:48
Android에서 독립적으로 실행할 수 있는 Native Binary를 빌드하기 위한 방법이다. 보통의 경우에는 AndroidStudio에서 Java/Kotlin+Native의 형태로 많이 사용되지만, Native Binary만 독립적으로 사용해야 하는 경우에는 이 방법으로 빌드하면 된다. 나 같은 경우에는 Android System Exploit 연구를 하면서 C언어로 Exploit Code를 작성하고 빌드해야 하기 때문에 이 방법을 사용한다. Android NDK 환경 설정 먼저 아래 링크에서 최신버전의 Android NDK를 다운로드 한다. https://developer.android.com/ndk/downloads 호스트 플랫폼에 맞는 패키지를 다운로드하고 적당한 위치에 압축을 풀어준다. 나는 ..
-
Taint Analysis ( IDA lighthouse & FRIDA )System/Reversing 2020. 4. 17. 00:53
Taint Analysis란, 프로그램이 동작하면서 실행되는 코드의 흐름을 파악하는 분석 기술이다. 좀 더 직관적으로 설명하면, 실행되는 Instruction마다 색을 칠해놓고 전체적인 결과를 보면 실행된 Instruction만 색이 칠해져 있을 것이다. 실제 코드가 실행되는 부분을 파악할 수 있기 때문에 분석할 때 엄청난 이점이 될 수 있다. IDA의 lighthouse은 DBI툴로 얻은 Taint Analysis결과를 코드블럭에 표시해주는 플러그인이다.lighthouse와 호환되는 DBI툴은 PIN, DynamoRIO, FRIDA가 있으며, 그 중 FRIDA를 사용하는 방법을 소개하려고 한다. PIN툴은 Intel아키텍처에서만 지원되고, DynamoRIO는 MacOS 64bit를 지원하지 않는 것 같..
-
Ubuntu16.04 python3.6 설치 (에러 해결)ETC 2020. 4. 4. 04:13
sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt update sudo apt install python3.6 보통 위 명령어를 사용하면 된다고들 한다. 근데 나는 아래처럼 apt-repository 403 Error가 발생한다. W: The repository 'http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial Release' does not have a Release file. N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8)..
-
Telegram Extractor (텔레그램 대화내용 추출)Issue 2020. 3. 25. 02:52
'텔레그램'하면 제일 먼저 떠오르는게 'Private' ,'Secure'일 것이다. 텔레그램에서도 이 부분을 가장 강조하고 있으며, 지속적인 업데이트로 더욱 더 견고해지고 있다. 또한, 모든 소스코드를 오픈소스로 공개하여 암호화를 크래킹하면 보상을 지급하는 CryptoContest도 진행하고 있다. https://github.com/telegramdesktop/tdesktop - Telegram Desktop Github https://telegram.org/blog/cryptocontest - Telegram Crypto Contest 요즘 말이 많은 '그 사건'에서 많은 메신저들 중 텔레그램을 선택한 이유도 위와 같은 'Private한 성격' 때문일 것이다. 그러라고 만든게 아닐텐데 말이다. 이런 사..
-
Universal SSL Pinning Bypass ( Android )Mobile/Frida 2020. 3. 8. 20:01
function SSLContext() { var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager'); var SSLContext = Java.use('javax.net.ssl.SSLContext'); // build fake trust manager var TrustManager = Java.registerClass({ name: 'com.sensepost.test.TrustManager', implements: [X509TrustManager], methods: { checkClientTrusted: function (chain, authType) { }, checkServerTrusted: function (chain, authType) {..