보안 5

Windows 아티팩트, 레지스트리

1. Windows 아티팩트 디지털 포렌식에서 다루는 디지털 증거는 크게 다음 두 가지로 나눌 수 있다.보관 증거 (Stored Evidence)-> 사용자가 직접 작성한 데이터생성 증거 (Generated Evidence)-> 사용자의 직접적인 개입 없이, 시스템이 자동으로 생성한 증거이 중에서 아티팩트(artifact)는 두 번째인 "생성 증거 중에서 일정한 구조로 저장되는 데이터"에 해당한다. 즉, 사용자의 흔적을 남긴 자동 생성 데이터 중, 디지털 포렌식에서 분석 가능한 형태로 구조화되어 저장된 정보를 말한다. Windows Artifacts는 수많은 종류가 있다.분류아티팩트주요 획득 가능 데이터시스템 파일레지스트리시스템 전반에 대한 설정 데이터시스템 파일$MFT, $LogFile, $UsnJrn..

파일 시스템

파일 시스템(File system)이란 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체계를 말한다. 간단히 말해, "파일을 어떻게 저장하고, 찾고, 읽고, 삭제할지를 정하는 체계"이다. 앞으로 진행할 실습은 모두 윈도우 기준이다. 1. 파티션과 볼륨운영체제를 공부하면서 많이 보았던 개념인 파티션은 물리적인 디스크(예: HDD 하나)를 논리적으로 여러 개로 나눈 것이다. 볼륨은 하나의 저장공간을 의미하는데, 정확한 표현으로는 파일시스템을 갖춘 저장 공간을 지칭한다. 일반적으로 하나의 파티션 = 하나의 볼륨이지만, 논리 볼륨(LVM 등)을 사용하면 여러 파티션을 하나의 볼륨으로 묶거나 분할할 수도 있다. 볼륨은 드라이브라고도 부른다. 즉 C 드라이브, D 드라이브를 말한다...

IDA 소개 및 사용법

IDA(Interactive DisAssembler Professional)는 정적 분석 도구이다. 좀 더 자세하게 말하면, 실행 파일을 정적으로 분석하는 역공학(리버스 엔지니어링) 도구이다. 하지만 이는 동적 분석 역시 어느정도 지원한다. 밑에 첨부하는 링크는 IDA 다운로드 링크이다.IDA Free  신뢰할 수 없는 프로그램을 분석할 때는 악성 프로그램일 가능성을 대비하여 정적 분석을 먼저 시도해보는 것이 바람직하다. 1. 단축키단축키기능G특정 주소나 심볼 이름으로 이동N현재 선택한 주소나 변수, 함수에 이름 붙이기X현재 위치(함수, 변수, 문자열 등)를 참조하는 모든 코드 위치를 보여줌Y현재 위치의 데이터를 특정 타입으로 지정 (byte, word, ascii 등)ctrl + f코드나 문자열 등에서..

보안 2025.04.06

[리버스 엔지니어링] x86 Assembly(2)

이 포스트에서는 운영체제의 핵심 자료구조인 스택, C언어의 함수에 대응하는 프로시저와 관련된 명령어를 소개하겠다.여러 레지스터가 별도의 설명없이 들어갈 것이기 때문에 이 포스트에서 사용하는 레지스터를 간단하게 정리해보았다.레지스터이름역할ripInstruction Pointer다음 실행할 명령어 주소raxAccumulator Register계산, 함수 리턴값 등 범용 사용rspStack Pointer스택 최상단 위치rbpBase Pointer함수 스택 프레임 기준점이 레지스터들을 잘 기억해두자 1. 스택들어가기 전에 간략하게 스택이 뭔지 설명하고 가겠다. 쉽게 말해서 나중에 넣은게 먼저 나오는 구조의 자료 저장소이다.push는 스택에 데이터를 넣는 것이고 pop은 스택에서 데이터를 꺼내는 것이다. 밑에서 ..

[리버스 엔지니어링] x86 Assembly(1)

1. Disassembler Disassembler를 이해하기 위해서는 먼저 assembler를 이해해야한다. 이는 밑에 사진으로 설명을 대체한다. 리버스 엔지니어링에서는 어셈블러에 역발상을 더해 역어셈블러(Disassembler)를 개발했다. 이는 어셈블러와 반대로 기계어를 어셈블리 언어로 번역한다. 대표적인 CPU 아키텍처의 명령어 집합 구조(Instruction Set Architecture, ISA)인 x86-64를 비롯하여 대중적으로 많이 사용되는 아키텍처들은 인터넷에서 역어셈블러를 구하기 매우 쉽다. 여러 ISA가 있지만 우리는 x86-64을 다룰 예정이다. 2. x86-64  x86-64 == x64 라고 생각해도 괜찮다. 우선 명령어 구조부터 살펴보겠다. 이 구조는 기본적으로 명령어(ope..