study/보안 24

x64 어셈블리 언어 - 주요 명령어 정리 (1)

데이터 이동 mov dst, src : src에 들어있는 값을 dst에 대입 mov rdi, rsi rsi의 값을 rdi에 대입 mov QWORD PTR[rdi], rsi rsi의 값을 rdi가 가리키는 주소에 대입 mov QWORD PTR[rdi+8*rcx], rsi rsi의 값을 rdi+8*rcx가 가리키는 주소에 대입 lea dst, src : src의 유효 주소(Effective Address, EA)를 dst에 저장 lea rsi, [rbx+8*rcx] rbx+8*rcx 를 rsi에 대입 퀴즈! [Register] rbx = 0x401A40 ================================= [Memory] 0x401a40 | 0x0000000012345678 0x401a48 | 0x0..

study/보안 2023.09.08

윈도우 메모리 구조

섹션 윈도우의 PE 파일은 PE 헤더와 1개 이상의 섹션으로 구성되어 있음 섹션: 유사한 용도로 사용되는 데이터가 모여있는 영역 .text: PE의 코드가 적혀있음 .data: PE가 실행중에 참조하는 데이터가 적혀있음 PE 헤더에 저장되는 섹션에 관한 데이터 섹션의 이름 섹션의 크기 섹션이 로드될 주소의 오프셋 섹션의 속성과 권한 .text 실행 가능한 기계 코드가 위치하는 영역 읽기/실행 권한 부여 (프로그램이 동작하려면 실행할 수 있어야함) 쓰기 권한은 제거함 -> 공격자가 악의적인 코드 삽입 가능 ex) 정수 31337을 반환하는 main 함수가 컴파일 되면 554889e5b8697a00005dc3라는 기계코드로 변환되는데, 이 코드가 세그먼트에 위치하게 됨 int main() { return 3..

study/보안 2023.09.07

정적분석 vs 동적분석

정적 분석 프로그램을 실행시키지 않고 분석하는 방법 [장점] 프로그램의 전체 구조를 파악하기 쉬움 구성된 함수, 함수간의 호출관계, 사용된 API, 포함된 문자열 등을 종합적으로 살펴볼 수 있음 분석 환경의 제약에서도 비교적 자유로움 안드로이드의 apk 파일을 소프트웨어 사용하지 않고도 분석 가능 바이러스와 악성 프로그램의 위협으로부터 안전함 바이러스를 동적 분석한다면 실행한 컴퓨터가 감염될 수 있음 정적 분석은 프로그램을 실행하지 않으므로 감염이 되지 않음 [단점] 난독화(Obfuscation)가 적용되면 분석이 매우 어려워짐 난독화가 적용되면 코드가 변형되어 실행흐름을 파악하기가 어려워짐 해제(Deobfuscation)하기 위한 여러 연구가 진행되고 있지만, 여전히 난독화 서비스들을 모두 무력하하는 ..

study/보안 2023.09.07

Computer Architecture 컴퓨터 구조

컴퓨터 구조와 명령어 집합 구조 컴퓨터 구조 컴퓨터가 효율적으로 작동할 수 있도록 HW 및 SW의 기능을 고안하고, 이들을 구성하는 방법을 말함 컴퓨터의 기능 구조에 대한 설계, 명령어 집합 구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등 포함 ‘컴퓨터의 기능 구조에 대한 설계’ : 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고 설계하는 분야 폰노이만 구조, 하버드 구조, 수정된 하버드 구조 명령어 집합 구조 : CPU의 명령어에 대한 설계 → CPU가 처리해야하는 명령어를 설계하는 분야 ARM, MIPS, AVR, 인텔 X86 및 x86-64 마이크로 아키텍처 : CPU의 하드웨어적 설계 → 정의된 명령어 집합을 효율적으로 처리할 수 있도록, C..

study/보안 2023.09.07
728x90