분류 전체보기(168)
-
리버스 텔넷(Reverse telnet)
텔넷은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜입니다. 리버스 텔넷은 텔넷의 이런 특성을 반대로 이용한 공격 방법입니다. 보통 네트워크를 통해 공격을 하기 위해선 방화벽 등을 통과해야 하는데 inbound 패킷에 대해 정책이 걸려있는 시스템을 뚫기란 쉽지 않습니다. 하지만 방화벽 정책 설정 시 outbound 패킷에 대해서는 보통 특별한 정책을 설정해주지 않는데 이러한 취약점을 이용합니다. 공격 대상이 되는 서버 등에서 먼저 공격자 pc로 연결을 하게 함으로써 시스템의 보안 정책을 우회하도록 합니다. 데모를 해보겠습니다. 공격자 pc의 ip 주소는 192.168.0.2입니다. 공격자 pc에서 3174 포트를 열어둡니다. 이 데모에서는 netcat(nc)라는 프로그램을 사용합니다. n..
2020.06.06 -
Parcel::remove() not yet implemented!
Android hal binder 동작 시 발생하는 에러입니다.Parcel::remove() not yet implemented! Binder쪽 로그를 보면 EX_TRANSACTION_FAILED 및 WOULD_BLOCK 그리고binder : ~ioctl ~ return -11 과 같은 에러도 같이 볼 수 있습니다. 먼저 Parcel::remove()에러는 libs/binder/Prcel.cpp에서 확인할 수 있습니다. 에러 내용 그대로의 log만 출력합니다. HAL Library와 Kernel Driver에서 발생하는 에러입니다. 어떻게 저 부분으로 빠지게 되는데 동작을 보겠습니다.HAL을 사용 시 내부적으로 /dev/hwbinder를 open하게 됩니다. HAL app쪽에서는 joinThraedPoo..
2020.05.23 -
퀄컴 QSEE 개발(ca part)
모바일 ap로 많이 쓰이는 퀄컴의 칩셋에는 qsee(qualcomm secure execution environment)라는 trustzone이 지원됩니다. Secure world라고 하며 normal world에서 동작하는 기존 os보다 보안이 필요한 기능을 동작시킬때 주로 사용됩니다. qsee외에도 mobicore의 kinibi, 삼성의 teegris가 있습니다. 우선 qsee에서 동작하는 trusted application을 개발해야 하며 이와 상호작용하는 client application이 있어야 합니다. ca는 nwd에서 동작하는 기존의 app과 같은 것이 있을 수 있고 kernel영역의 드라이버 형태로 구현될 수도 있습니다. NWd에서 ca를 개발하려면 qsee에서 제공하는 library, 헤..
2020.04.04 -
Android java object variable memory address
안드로이드 오브젝트(Object) 형 변수의 어드레스, c에서 말하는 포인터 주소를 얻는 방법을 검색해보면 보통 '얻을 수 없다' 혹은 hashcode에 대한 소개가 나타납니다. 일반적으로 안드로이드 어플을 만들 때는, jni 및 c를 써도 object 어드레스 자체에 접근하는 건 어렵습니다. 관련된 인터페이스, api를 제공하지 않고 있기 때문인데 그래서 c단에서 안드로이드 어플과 같이 상호작용하는 함수를 만들 때는 jni 함수들을 이용하게 됩니다. jni함수 내부에서 안드로이드 object 형 변수의 메모리에 접근이 발생하게 됩니다. 안드로이드 프레임워크, native library, art 등의 수정이 가능하다면 memory addresss에 직접 접근하여 수정, 확인할 수 있습니다. 이러한 작업을..
2019.11.09 -
모바일 보안 패치 확인
자신이 갖고있는 스마트폰(안드로이드)의 보안 패치 상태를 확인해 볼 수 있습니다. 삼성전자의 갤럭시 시리즈, LG 스마트폰 뿐만 아니라 샤오미, 화웨이 등 안드로이드를 이용하는 다양한 스마트폰이 나오고 있는 와중에 사용하고 있는 폰의 보안 패치 수준이 어떻게 되는지 관심있는 분들은 한번쯤 확인해 봐도 좋을 것 같습니다. 제가 여기서 사용하는 어플은 SnoopSnitch입니다. Play 스토어에서 다운받을 수 있습니다.SnoopSnitch는 오픈소스 안드로이드 어플로 자세한 사항은 아래 주소에서 확인할 수 있습니다.https://opensource.srlabs.de/projects/snoopsnitch 쓰고 있는 폰은 갤럭시 S7 edge로 10월 기준 테스트 되는 모든 패치가 적용되어있었습니다. 녹색 라..
2018.10.14 -
App signature 비교
Android framework 쪽 기능을 구현하다보면 어떤 기능이 특정 app만 사용할 수 있게끔 해야하는 경우가 있습니다.이런경우 안드로이드(AOSP)에서 제공해주는 권한을 이용 할 수도 있지만 특정 개발자(서명보유자)의 app만 사용하도록 할 수도 있습니다.모든 안드로이드 app은 배포되기위해 signing이 되어야합니다. 이때 signing되는 key는 vendor나 개인 개발자가 각자 보유하게되죠. 여러 app을 같은 key로 signing할 경우 이 app들에 대해서만 허용해주는 로직을 만들 수 있습니다. PackageInfo packageInfo=context.getPackageManager().getPackageInfo("패키지명", PackageManager.GET_SIGNATURES);..
2018.07.29