소개하기 "자모조립소"는 Mac 환경과 Windows 환경 간의 한글 파일명 인코딩 차이를 해결하기 위한 웹 기반 도구입니다. 이 도구는 사용자가 파일을 업로드하면 한글 파일명의 자소가 분리되지 않도록 인코딩합니다. 이 웹페이지는 파일을 서버로 전송하지 않고, 모든 처리를 사용자의 브라우저 상에서 직접 수행합니다. 파일명 인코딩 차이 이해하기 Mac과 Windows 환경에서 한글 파일명을 다르게 인코딩하는 문제는 두 운영 체제가 사용하는 문자 인코딩 방식의 차이에서 기인합니다. Mac은 NFD (Normalization Form Decomposition) 방식을 사용해 한글 자모를 분리하여 저장하는 반면, Windows는 NFC (Normalization Form Composition)를 사용해 한글 자..
들어가며 Bear는 C/C++ 프로젝트의 빌드 과정에서 사용되는 컴파일 도구이다. 다른 컴파일러와는 다르게 빌드 과정에서 실행되는 컴파일 명령을 가로채어 기록한다. 특징 1. 컴파일 명령 추출: 'Bear'는 'make', 'cmake', 'ninja' 등 다양한 빌드 시스템을 사용하며 실행되는 동안의 컴파일 명령을 가로채고 기록한다. 2. JSON 형식 출력: 대부분의 빌드 시스템과 호환되며, 다른 도구들이 쉽게 활용할 수 있다. 3. 간단한 사용: 'bear' 명령어를 빌드 명령어 앞에 사용하기만하면 된다.(예: bear -- make) 설치 1 패키지관리자로부터 설치할 수 있다. sudo apt update sudo apt install bear 설치 2 소스코드를 내려받아 직접 설치할 수 있다. ..
2023년 마무리 2023년 4분기 마무리 겸 2023년 마무리이다. 업무 업무 1 재직 3년차를 지나 4년차로 접어든다. 기술 보안이건, 관리 진단이건 보안 컨설팅을 하면서 기업마다 보안을 대하는 시각에 차이를 느낀다. 모의해킹을 할 때엔 결국 해커들이 침투하는 공격 표면의 노출을 최소화하는 것이 보안이라고 생각했다면, 관리진단도 맥락은 비슷하지만, 좀더 다양한 영역(인적, 물리적, 정책적)에서 공격 표면의 노출을 최소화한다. 쓰고 나니 같은말 국내에서는 보안의 근간이 되는 것이 지금도 끊임없이 제개정되고 있는 정통법, 개인정보호법 등 관련 법률 조항이다. 법으로 제정되는 것은 가장 최소한의 요건이지만, 요건을 지키는 것이 어렵기도 하고 기업 본연의 업무에 집중하면서 이런 부분들까지 챙겨가기엔 너무 자..
개요 정보 수집이나 파일 다운로드 자동화를 위해 크롤링을 사용한다. 주로 파이썬의 requests 모듈을 이용하여 수집했는데, 대상 사이트에서 응답코드 403(Forbidden)을 반환하면서 데이터를 가져올 수 없었다. 문제를 발견하고 해결하는 과정이다. 문제 식별 cloudflare에서 차단 정책을 도입하여 봇의 접근을 차단하고 있었다. 영문으로는 'Cloudflare challenge page'로 언급하는데 자동화된 접근이나 스크래핑 봇을 차단하기 위해 사용한다. 작동 방식은 브라우저에서만 실행할 수 있는 자바스크립트 구문을 사이트 본문에 삽입하여 실행 여부를 검사하는 방식을 포함하여 사용자의 상호작용이 필요한 버튼을 추가(캡차 등)하는 다양한 방법이 존재한다. 대상 페이지의 경우 명령..
사전지식 패스트부트(Fastboot) 부트로더 언락 등의 작업을 수행할 수 있으며 system, boot, recovery 등 다양한 영역의 펌웨어를 교체작업할 수 있는 엔지니어링 프로토콜이다. 부트로더가 허용하는 경우에만 시스템을 플래싱할 수 있으며, 부트로더는 기본적으로 잠겨 있다. 부트로더를 잠금해제 할 수는 있지만 해제하는 시점에 개인정보보호를 위해 저장된 사용자 데이터는 모두 삭제된다. 삼성 단말기에서는 패스트부트라는 용어 대신 다운로드 모드(download mode)라는 명칭을 사용한다. Magisk 동작원리 systemless working boot.img에 'init' 파일이 빌드되어 있기 때문에 boot.img 파일을 수정하는 것이 필요하며, /system 경로의 파일은 수정할 필요가 없..
안드로이드 취약점진단에서 루팅 탐지 우회와 관련있는 매지스크 모듈인 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)가 있는데, 람다 함수는 요청이 발생했을 때 필요에 의해서만 이벤트를 처리하고 실행이 완료되..