본문 바로가기

전체 글

(8)
모바일 진단을 위한 안드로이드 구조 안드로이드 아키텍처는 다섯 계층으로 나눌 수 있다.리눅스 커널 계층하드웨어 추상화 (HAL) 계층Native 라이브러리/ 안드로이드 런타임 계층프레임워크 계층어플리케이션 계층모바일 진단 시 가장 관련있다고 생각하는 곳은 네이티브와 런타임, 프레임워크이므로 세 계층에 대해서 중점적으로 보려고 한다.  안드로이드 런타임안드로이드 런타임(Android RunTime, ART)은 안드로이드 OS에서 애플리케이션을 실행하기 위한 환경을 말한다. 자바는 소스코드 작성 후 컴파일 시 바이트코드로 변환된다.바이트코드를 실행하는 가상 머신은 JVM(Java Virtual Machine) 인데 라이선스 문제로 인하여 구글에서는 Dalvik VM을 따로 개발하여 안드로이드에서 사용한다.Dalvik VM은 안드로이드 5.0 ..
안드로이드 네이티브 파일이 너무 클 경우 일반적인 경우 네이티브 파일은(.so) IDA를 이용하여 분석이 가능하지만 .NET, C#, C++의 경우 용량이 너무 크거나 복호화가 잘 되지 않는 이유로 분석에 어려움을 겪는다.[출처] [Android] dnsPy를 이용한 디버깅|작성자 멜렌  모바일 게임을 분석하기 위해 평소와 같이 jadx를 이용하여 앱을 디컴파일 하려했지만 제대로 내용이 나오지 않았다.분석하려는 게임은 Unity로 제작되었고 제작자가 작성한 C# 코드나 .NET 코드들은  디컴파일이 불가하였기에 Il2CppDumper를 이용하여 so 파일의 주요 DLL을 추출하였다.https://github.com/Perfare/Il2CppDumper GitHub - Perfare/Il2CppDumper: Unity il2cpp reverse ..
Frida 코드 간단 정리 Frida 간단 정리 가장 기본적인 형태는 다음과 같다.Interceptor.attach("후킹할 주소", { onEnter: function(args) { // 후킹한 주소, 함수 진입 전 실행될 코드 } onLeave(retval) { // 후킹한 주소, 함수 실행 후 실행될 코드 }});  함수나 모듈의 주소 값을 받아오는 코드이다.Module.findExportByName(모듈 명, 함수 명); Interceptor.attach(Module.findExportByName(null, 함수 명)) 이렇게 조합하여 사용할 수 있다.  Memory 객체다음은 입력한 메모리 주소의 권한을 변경하는 코드이다.Memory.protect(address, size, prot..
XSS(Cross Site Scripting) XSS(Cross Site Scripting) 권한이 없는 사용자가 악의적인 용도로 웹사이트에 스크립트를 삽입하는 공격이다. XSS는 사용자로부터 입력 받은 값의 검증이 없으면 발생할 수 있으며 개발자의 의도와 다른 행동을 수행시키거나 쿠키, 토큰 등 민감한 정보를 탈취할 수 있다. 1. Stored XSS 저장형 XSS 공격은 공격자가 악성 스크립트를 서버에 저장함으로써 발생한다. 서버에서 제공하는 기능인 게시판, 댓글, 프로필 등에 악성 스크립트를 넣고 저장시켜 다른 사용자가 해당 스크립트를 열람했을 때 사용자의 브라우저로 전달되게 하는 공격이다. 공격과정은 다음과 같다. 1) 검증을 수행하지 않는 사이트에서 제공하는 게시판에 악성 스크립트 작성 2) 일반 사용자는 서버에 악성 스크립트가 작성된 게시..
SQL Injection SQL Injection SQL Injection이란 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식이다. 공격 시 임의의 SQL 문을 주입하고 실행되게하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 저장된 데이터를 유출할 뿐만 아니라 조작 가능 확장 프로시저를 이용하여 원격으로 시스템 명령 실행 가능 로그인 등과 같은 폼에서 인증 우회 가능 1. SQL Injection SQL의 논리적 에러를 이용한 가장 대중적이고 많이 쓰이는 기법 SELECT * FROM Users WHERE id = 'INPUT1' AND password = 'INPUT2' 위와 같은 SQL 문이 있을 때 공격자는 'OR 1=1--을 삽입하여 다음과 같이 공격할 수 있다. SELECT * F..
Docker 임시 간단 정리 run = create + start sudo docker run --name webserver -d -p 8001:80 nginx:1.18 -d: 데몬 형태로 실행 -> 프로세스가 끝나도 유지 -p: 호스트에서 설정한 포트 sudo docker logs -f ~: 도커 로그 실시간 출력 sudo docker inspect ~ : 컨테이너 세부정보 출력 sudo docker commit "CONTAINER" IMAGE_NAME: 현재까지 작업한 container 저장 sudo docker push DOCKER_ID_USER/DRIVER: docker cloud에 push sudo docker volume ~ : container의 데이터 휘발성 때문에 호스트에 데이터를 저장할 때 사용 sudo docke..
개인정보의 개념 - 주요 용어 기업이나 공공기관은 개인정보를 이용하여 여러 서비스를 제공하고 있다. 개인정보를 보호하기 위해 법을 만들었고, 법에서는 명확한 기준이 있어야 하기 때문에 알아둘 용어들이 있다. 처리의 개념(제2조 제2항 제2호) - '처리'에는 개인정보의 수집, 생성, 연계, 연동, 기록, 저장, 보유, 가공, 편집, 검색, 출력, 정정, 복구, 이용, 제공, 공개, 파기는 물론 개인정보의 전송, 확인, 전달, 이전, 열람, 조회, 수정, 보완, 삭제, 공유, 보전, 파쇄 등 '유사한 행위'도 포함된다. 다만, 다른 개인정보처리자가 처리하고 있거나 처리한 개인정보를 단순히 전달, 전송, 확인 또는 통과만 시켜주는 행위는 처리하지 않는다. 즉, 개인정보처리자가 개인정보로 하는 거의 모든 것이 처리이다. 예외로 이미 처리되..
개인정보의 개념 현대 사회와 개인정보의 활용 현대에 들어서 개인정보를 통해 서비스를 하는 기업들이 많다. 간단하게는 출석체크부터 공공기관의 행정업무, 의료기관의 환자 데이터, 금융기관, 인터넷 쇼핑, 운송업체 등 다양한 곳에 다양한 목적으로 개인정보들이 사용되고 있다. CCTV는 범죄 예방이라는 좋은 목적을 가지고 있다. 하지만 CCTV를 악용할 경우 특정 인물의 동선을 파악하고 그 인물의 집이나 직장, 무엇을 입고 있는지, 누굴 만났는지, 무엇을 샀는지, 심지어 오늘 점심으로 무엇을 먹었는지까지 알 수 있다. 이를 예방하기 위해서 개인정보는 특정한 목적만을 가지고 사용되어야 한다. 여기서 다양한 정보를 이용하려고 분류할 때 '오늘 뭐 입었는지와 같은 것들도 개인정보에 포함되는 것일까?' 라는 의문이 생긴다. 어떠한 기..