안드로이드 취약점진단에서 루팅 탐지 우회와 관련있는 매지스크 모듈인 Zygisk의 동작 원리에 대해 정리한다. Zygote 프로세스 개요 안드로이드 앱은 자바 코드로 작성되어 있고 가상머신인 안드로이드 런타임(ART)에서 동작한다. 앱이 실행될 따마다 가상머신을 초기화하고 자원을 할당하는 작업은 실행을 느리게 하는 원인이 된다. Zygote(자이고트) 프로세스는 앱이 실행되기 이전에 실행된 가상 머신의 코드 및 메모리 정보를 공유함으로써 실행시간을 단축한다. 리눅스의 fork() 시스템 콜의 동작 원리와 비슷하다. 자식 프로세스 'A'를 생성할 때 부모 프로세스의 메모리 구성 정보 및 공유 라이브러리에 대한 링크 정보를 공유한다. 부모 프로세스에는 이미 이러한 정보들을 가지고 있으므로 링크 정보만 매핑하..
직접 연구하여 작성한 자료입니다. 공식 출처가 명시되지 않은 자료의 무단 복제, 사용을 금지합니다. 공격 기법은 학습용, 허가된 환경에서 실습 바랍니다. 실 운영망 대상 공격은 처벌받습니다. (정보통신망법 제48조 1항) 학습자료 apk파일은 https://github.com/colfax0483/Vulnerable_apk 에서 clone할 수 있습니다. 개요 동적분석을 실시하기 위해 앱을 설치하고 실행할 단말기 또는 에뮬레이터 등 분석환경을 준비한다. 실제 단말기를 사용하는 경우 루팅된 기기를 준비하며, 실습에서는 안드로이드 스튜디오를 이용한 에뮬레이터 단말 환경을 준비한다. 1. 동적 분석 환경 준비 안드로이드 스튜디오는 구글에서 제공하는 공식 홈페이지(https://developer.android.c..
직접 연구하여 작성한 자료입니다. 공식 출처가 명시되지 않은 자료의 무단 복제, 사용을 금지합니다. 공격 기법은 학습용, 허가된 환경에서 실습 바랍니다. 실 운영망 대상 공격은 처벌받습니다. (정보통신망법 제48조 1항) 개요 안드로이드 취약점 진단을 수행함에 있어 정적분석과 동적분석은 떼어놓을 수 없는 필수적인 과정이다. 앱을 분석하기 위해서는 앱의 실제 실행 여부에 따라 코드를 분석하는 정적분석, 앱을 실행하면서 전달되는 데이터나 행위를 분석하는 동적 분석 두 단계로 나눌 수 있다. 각각의 단계에서 얻을 수 있는 정보가 다르고 서로 상호보완적으로 정보를 제공하기 때문에 하나씩 살펴보아야 한다. 이 포스트에서는 두 가지 분석 방법에 대해 알아본다. 정적 분석 정적 분석은 앱을 설치하지 않고 확인할 수 ..
안드로이드 로그캣(logcat)을 볼 수 있는 뷰어인 'lognote'를 소개한다. 주요 기능 온/오프라인 로그캣 뷰어 정규표현식 필터 지원 aging test(로그 라인 단위로 파일 분할 저장 가능) 다운로드 깃허브 페이지(https://github.com/cdcsgit/lognote)에서 내용을 확인할 수 있으며, 다운로드는 배포(release)페이지(https://github.com/cdcsgit/lognote/releases)에서 가능하다. 실행 자바 JDK가 설치되어 있어야함 Windows : start javaw -Dfile.encoding=utf8 -Xmx1024m -jar LogNote.jar 또는 압축파일 내 lognote.bat 실행 Linux : java -Dfile.encoding=..
들어가며 AWS Lambda와 같은 서버리스 컴퓨팅 환경에서 비동기(Asynchronous) 처리를 다룰 때에는 함수 실행이 종료 되기 전에 프로그램이 먼저 종료되는 문제가 발생할 수 있다. 람다가 실행을 완료하고 종료될 때, 백그라운드에서 실행 중인 프로세스나 작업을 모두 종료시켜버리기 때문이다. 이러한 특성 때문에 비동기로 실행시킨 작업이 완료되기 전에 람다 함수가 먼저 종료된다. 비동기식으로 작성하여 운영중이던 챗봇 서비스를 클라우드로 마이그레이션할 때 직접 겪었던 문제를 소개하고, 람다 함수를 사용할 때 동기식 호출과 비동기식 호출의 차이와 장단점을 알아본다. 문제 람다 함수에는 수명주기(Lifecycle)가 있는데, 람다 함수는 요청이 발생했을 때 필요에 의해서만 이벤트를 처리하고 실행이 완료되..
들어가며 인간의 삶에서 끊임없이 마주치는 삶과 죽음, 행복과 불행, 슬픔과 기쁨이라는 양면성은 짧은 인생을 살면서도 느끼고 있다. 하지만 그 누구도 위로해주지 않는다는 것을 알기 때문에 이번에는 애세이를 통해 같은 다른 곳에서 같은 경험을 하는 사람들의 이야기를 들으며 위로를 받았다. 작가가 느낀 인간적인 감정들과 경험들로부터 공감을 느끼고 삶의 끊임없는 변화와 불안함에 대한 통찰력이 공유되는 과정에서 고요한 감동과 우울함 사이에서 떠다니는 묘한 감정에 휩싸였다. 감상 처음에는 애세이를 좋아하지 않았다. 작가의 개인적인 경험이나 시각에 갇히는 것이라고 생각했는데, 그 경험을 이해하기 위해서는 더 많은 내 경험이 필요했다. 작가의 이야기가 끌어내는 감정과 생각에 집중하면서 나의 공감점을 찾는 것이 필요했다..
들어가기 AWS lambda는 외부 모듈의 실행을 바로 지원하지 않는다. 로컬에서는 pip install 을 통해 바로 설치 및 실행할 수 있지만 서버리스 환경에서는 실행시점마다 같은 실행 환경을 보장하지 않는다. 함수의 실행 시점에만 인스턴스를 띄워서 지정한 메모리 용량과 시간만큼만 실행한다. Amazon Linux v2 환경에서 동작하는 것으로 보이나 사용자가 시스템 환경까지 많은 부분 관여할 수 없다. 코드만 실행하면 되는 목적으로 사용하기에는 가장 적합한 환경이다. Lambda Layer 람다 레이어를 사용하여 외부 모듈을 로드하여 사용할 수 있다. 다음의 과정을 따른다. 1. 로드할 모듈 로컬에 설치 pip의 옵션을 이용하여 지정한 폴더에 설치한다. -t 옵션은 모듈을 설치할 타겟(폴더)를 지정..
1. 개요 다양한 대상의 취약점 진단을 수행할 때 분석가들은 자신만의 진단 루틴을 가진다. 웹을 대상으로 하는 경우 다양한 메뉴, 파라미터 입력 등의 값을 입력해 보면서 프록시에 어떤 데이터들이 전송되는지 살펴본 후 취약점이 발생할 것으로 예상되는 다양한 포인트에 공격 벡터를 변경해가면서 응답을 관찰한다. 모든 진단 대상에 해당하는 것은 아니지만 대상을 처음 탐색할 때, 구문 삽입 공격(injection)에는 자신만의 공격 벡터를 관리하고 어느정도 정형화된 패턴을 가지게 된다. nuclei는 보안 취약점 진단을 자동화하는 데 사용되는 강력한 오픈 소스 도구이다. 이 도구는 다양한 웹 및 서비스에 대해 취약점을 탐지하고 분석할 수 있다. nuclei는 사용자가 정의해둔 패턴 기반 검색 기능을 제공하여 일치..
들어가며 대 AI 시대를 맞아 구글 검색보다는 GPT 프롬프트에 질문 몇 줄 입력하는 것이 더 빠른 방법이 되고 있다. 기술의 발전은 많은 편의를 가져다 주었지만 예전만큼의 성취감까지 이루어주진 못한다. 뭐든지 쉽게쉽게 하려는 성향이 생긴다. 결과가 나올거 같지 않던 연구를 6개월이고 1년이고 했던 기억들이 나를 성장시켜 주었다는 것을 알기 때문에, 나다움을 잃지 않기 위해 분기마다 한번씩 쉬어가는 시간을 가져본다. 트러블 슈팅 게시글을 하나씩 작성하려고 했는데 하나하나 시간이 너무 많이 들어 한번에 요약해 두기 위함도 있다. 업무 업무 1 평일 주간 대부분을 보내는 부분이다보니 회고에서 빠질 수 없다. 이직 후 1년이 되었다. 21년 1월에 첫 직장부터 쉬지않고 일했으니 이제 3년이 다 되어간다. 첫 ..
AWS KMS AWS Key Management Service - KMS는 데이터 암호화를 활성화하기 위해 암호화 키를 생성하고 제어할 수 있는 관리형 암호화 서비스이다. KMS는 AWS 서비스 전반과 애플리케이션 내에서 데이터를 암호화할 수 있는 고가용성 키 스토리지, 관리 및 감사 솔루션을 제공한다. KMS는 하드웨어 보안 모듈(HSM)을 사용하여 FIPS 140-2 암호화 모듈 검증 프로그램을 통해 키를 보호하고 검증한다. KMS는 여러 AWS 서비스와 원활하게 통합되어 해당 서비스의 데이터를 쉽게 암호화할 수 있다. AWS CloudTrail과 통합되어 암호화 키 사용 로그를 제공하여 감사, 규정 및 규정 준수 요구사항을 충족할 수 있도록 지원한다. KMS는 regional 하며, 키는 키가 생성..