정보보호 시험범위

백지원·2023년 6월 10일
0

<8장 악성코드와 난독화>

실행파일의 구조에 대해서 이해 필요
(특히 text섹션 이런게 뭔지)
PE 헤더 안에 정보들 수업시간에 언급한 중요한 정보들(Entry Point가 뭔지)

  1. 실행파일의 구조 (크게 세 가지 섹션) 쓰기
    -> 헤더, 리소스, 실행코드
  2. Entry Point가 뭔지
    -> 실행하게 될 명령어의 시작 주소
  3. text 섹션은 실행파일의 구조 중 어디에 해당되는지
    -> 실행코드 섹션

패킹
뭔지
어떤 식으로 작동하는 건지

  1. 패킹?
    -> 파일의 크기를 줄이기 위해 압축 혹은 보안의 목적을 위해 암호화하는 것

UPX랑 Themida에 대해서 많이 알아둬
가상화기반 난독화에 대해서 자세히!! 잘!!!

1.UPX?
-> 보안 목적보다는 바이너리 크기를 줄이기 위해 사용하는 패킹 도구
2.Themida?
-> 바이너리 분석을 방해하기 위한 패킹 도구


소스코드 난독화
바이너리 난독화
둘이 무슨 차이인지??
소스코드를 가지고 컴파일을 하면서 결과 바이너리를 난독화한다. 이런게 다 무슨 의미인건지.

1.소스코드 난독화?
-> 프로그래밍 언어로 작성된 소스 코드를 알아보기 힘든 형태로 바꾸는 기술
2.바이너리 난독화?
-> 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술
3.소스코드 난독화와 바이너리 난독화 차이?
-> 소스 코드 난독화는 일반적으로 컴파일 또는 해석 전에 적용되며,이진 난독화는 일반적으로 컴파일된 실행 파일, 라이브러리 또는 바이트코드에 적용
4.'소스코드를 가지고 컴파일을 하면서 결과 바이너리를 난독화한다.' 의미
-> 컴파일 후 생성된 바이너리를 난독화하여 역공학을 통해 분석하기 힘들게 변조한다.


어셈블리 코드와 Basic Block 개념 이해

1.어셈블리 코드
-> 컴퓨터 프로그래밍의 low language
2.Basic Lock
-> 반드시 한 묶음으로 실행되는 코드들


바이너리 기반 난독화 기법 몇 가지.
뭐가 있는지
원리는 뭔지

1.바이너리 기반 난독화 기법 몇 가지 (중요!!!!)
-> Control Flow Flattening, Instruction Substitution, Bogus Control Flow


LLVM Obfuscator가 뭔지.
오픈 소스 난독화 도구인데 작동하는 방식이 소스코드를 컴파일 하는 과정에서 바이너리를 난독화시키는 것.
관계

1.LLVM Obfuscator?
-> 리눅스 바이너리에 적용 가능하며, 소스코드를 컴파일 하는 과정에서 바이너리를 난독화시키는 오픈소스 난독화 도구


가상화기반 난독화
자바 가상 머신 JVM
이더리움 가상 머신
VM Ware 가상 머신
얘네들 구분 잘 하렴

1.가상화기반 난독화 : 가상화 기술을 사용하여 코드를 난독화
자바 가상 머신 : Java 바이트코드를 실행할 수 있는 가상 머신
2.이더리움 가상 머신 : 이더리움 블록체인에서 실행되는 가상 머신. 코드에 직접 작성된 계약 조건으로 자체 실행 계약인 스마트 계약을 실행
3.VM Ware 가상 머신 : 단일 물리적 시스템에서 여러 가상 시스템을 생성하고 실행할 수 있는 소프트웨어


안티디버깅
안티디버깅 종류는 강의시간에 언급한 애들만

1.안티디버깅 종류 3가지
->API 기반, 익셉션 기반, 자료구조 기반
2.API 기반 안티디버깅 3가지
->FindWindow API, Registry Value, IsDebugerPresent API
3.FindWindow API?
->알려진 디버거 응용 프로그램과 관련된 특정 창 클래스 이름 또는 창 제목을 검색하여 디버거 존재 확인
4.Registry Value?
-> 특정 레지스트리 키 또는 값을 검사하여 디버깅 관련 아티팩트가 존재하는지 확인
5.IsDebugerPresent API?
->프로그램 실행 흐름의 초기 검사를 통해 디버깅 시도 감지
6.익셉션 기반 안티디버깅 2가지
-> INT 3 (CC) 스캐닝, TRAP Flag 기반 안티디버깅
7.INT 3 (CC) 스캐닝?
-> 실행 파일 내에 INT 3 명령어가 있는지 확인
8.TRAP Flag?
-> TF 플래그 값을 주기적으로 확인하여 예기치 않게 설정되었는지 감지

플레그 레지스터

프로세서 작동과 관련된 다양한 상태 플래그를 보유하는 x86 아키텍처의 특수 레지스터

레지스터 : 산술적/논리적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 중앙 처리 장치(CPU) 내의 기억 장치

안티 가상화
안티 디버깅
차이가 뭔지?
가상화와 에뮬레이션, 디버깅 이런 개념들의 차이를 구체적으로 들 수 있어야 함

가상화가 다양한 맥락에서 사용되는데, 구분할 수 있어야 함

  1. 자바 가상머신
    2.클라우드 가상머신
    3.가상화 기반 난독화

악성코드
가상머신
Sandbox
개념, 원리 이해

에뮬레이션도 공부해

DBI도 개념적으로 어떤 애인지 이해

가상화와 에뮬레이션 도구?중에

Qemu : 오픈 소스 가상화 및에뮬레이션 플랫폼
intel vt :
VM Ware
Virtual Box

<챕터9 바이너리 분석>

정적 분석, 동적 분석 개념
둘의 차이가 뭔지 자세하게 얘기할 수 있도록

desumbler와 디컴파일러 이게 어떤 것을 하는 건지
디서샘플러와 디컨파일러는 직접 사용해보는 것 권장

동적 분석, 정적 분석
어떻게 하는거냐
장단점이 뭐냐
직접 실습 해보면 뭔지 더 잘 알겠지?

디버깅에서
브레이크포인트가 디버깅에서 제일 중요해
싱글 스텝, 넥스트 인스트럭션 이것두 중요해

디스어셈블러 mbl과 디버거 개념, 그리고 관계

확장 도구들에 대한 것들은 상식 선에서만 봐둬

실습은 가급적 직접 열심히 해봐야 시험을 잘 볼 수 있도록 해놨어.

IDA같은 도구는 직접 써보길 권해
무료 버전도 가능해. 단순히 디스어셈블러 써보고 할거라면 ㅎㅎ
디컴파일러 기능은 유료
IDA는 악성 코드 분석에 워낙 중요한 도구니까 간단한 사용법은 암기 권장.

<10장 안티안티디버깅>

실습 중요
-> 피트 레이스로 왜 안티디버깅이 되는 거고 이것을 우리가 할 때 이렇게 컴파일 하고 디버거에서 실행하는 거랑 이 엘디 프릴 로드 사용한 게 뭔지
관련 코드들 이게 어떤 순서로 뭘 어떻게 했는지 정확하게 이해하면서 실습을 할 수 있다면 시험에 어려움이 없을거다.

0개의 댓글