본문 바로가기

4-3. 2023-2 심화 스터디/윈도우 악성코드 분석

(5)
[2023.11.11] 인프런 윈도우 악성코드(malware) 분석 입문 과정 강의 수강 - 섹션 4 5.1 악성코드 주요 행위 분석 1 - API, 파일시스템 윈도우 API 대부분의 악성코드는 윈도우 플랫폼에서 동작 운영체제와 밀접하게 상호작용 핸들(Handle) 윈도우, 프로세스, 모듈, 메뉴, 파일 등과 같이 운영체제에서 오픈되거나 생성 객체나 메모리 위치를 참조한다는 점에서 포인터와 같음 핸들요청 객체생성 핸들반환 객체조작요청 파일 시스템 함수 악성코드가 시스템과 상호작용하는 가장 일반적인 방식은 파일을 생성하거나 수정해 파일명을 구별하거나 기존 파일명을 변경 식별자로 사용 가능 파일을 생성해 그 파일에 웹 브라우징 내용을 저장한다면 해당 스파이웨어 형태일 가능성이 높음 함수 설명 CreateFile 파일을 생성하고 열 때 사용 기존 파일, 파이프, 스트림, I/O 장치를 열고 새로운 파일을 생성..
[2023.11.04] 인프런 윈도우 악성코드(malware) 분석 입문 과정 강의 수강 - 섹션 3 4.4.1 IDA 활용한 분석 개요 *IDA: 대중적인 디버거 *목표: 5-1 샘플 이용하여 IDA의 전체적인 흐름 파악 및 익숙해지기 1. IDA 기본 헥스레이(Hex-Rays)사에서 배포 PE(Portable Executable), COFF(Common Object File Fromat, 유닉스 공용 라이브러리 포맷), ELF(Executable and Linking Format, 유닉스용 실행 파일 포맷 지원) x86, x64 지원 함수 발견, 스택 분석, 지역 변수 확인 등 많은 기능 제공 과정의 모든 부분 수정, 재배치, 재정의 분석 진행 상황 저장 기능(주석 작성, 레벨링, 함수 이름 붙이기) 막강한 플로그인 지원 2. IDA 활용 1) 파일 올리기 2) 디스어셈블리 윈도우 모드 (스페이스 바..
[2023.10.14] 인프런 윈도우 악성코드(malware) 분석 입문 과정 강의 수강 - 섹션 2 3.1 악성코드 분석 방법 01 기초 정적 분석 비실행 실행 간략분석 기초 정적 분석 기초 동적 분석 상세분석 고급 정적 분석 고급 동적 분석 악성코드 분석의 네 가지 접근 방법 완전 자동화 분석 정적 분석 및 동적 분석을 통해 악의적인 행위를 판단 자동 분석 수행(파일 생성 수정 과정의 분석, 레지스트리 분석, 네트워크 분석 등) 전문가에 의해 분석되는 만큼 상세하거나 정확하지 않을 수 있음 악성코드 분석 제공 서비스 정적 속성 분석 악성코드의 추가 분석을 위해 필요한 단계 문자열 헤더 정보, 해시 값, 리소스 정보, 패킹 여부 등 신속하게 정보 획득 정보들을 활용해 실행 파일 간의 비교 데이터베이스를 구성 바이러스 토탈 서비스 대화형 동적 분석 레지스트리, 파일시스템, 프로세스. 네트워크 활동을 이해..
[2023.10.07] 인프런 윈도우 악성코드(malware) 분석 입문 과정 강의 수강 - 섹션 0, 섹션 1 인프런 - 윈도우 악성코드(malware) 분석 입문 과정 섹션 0의 1.6 ~ 1.8 강의와 섹션 1 강의를 수강하였다. ▶ 섹션 0 - 1.6 ~ 1.8 1. 올리디버거 올리 유스척이 개발한 x86 디버거 1.1. CPU 인터페이스 디스어셈블러 : 어셈블리어를 볼 수 있다. 레지스터 : 레지스터의 내용을 볼 수 있다. 덤프 윈도우 : 메모리에 저장된 값을 볼 수 있다. 스택 : 스택의 상태를 볼 수 있다. 1.2. 메모리 맵 프로그램의 배열 상태를 확인할 수 있다. 1.3. 스레드 View → Threads를 통해 현재 실행 스레드를 확인할 수 있다. 각 스레드는 개별 스택을 가지고 있다. 2. 올리디버거 사용 방법 2.1. 올리디버거 기본 단축키 실행(Run/Play) Debug → Run F9 정..
[2023.09.23] 인프런 윈도우 악성코드(malware) 분석 입문 과정 강의 수강 - 섹션 0의 1.1~1.5 인프런 - 윈도우 악성코드(malware) 분석 입문 과정 섹션 0. 악성코드분석 입문과정 소개 및 준비의 1.1 부터 1.5까지 수강하였다. 리버싱 기초 1.2 레지스터와 어셈블리 Reversing(역공학) : 프로그램을 소스코드 단계로 되돌려 분석하는 것 , 프로그램 내에서 디버깅이나 버그 발생 시 분석하기 위한 기술 C언어가 어셈블리어가 되는 과정 C언어 ----------------------> 기계어 (바이너리 코드) ---------------------> 어셈블리어 컴파일 디스어셈블 C/C++ 코드와 어셈블리 코드의 차이 C/C++은 간결하게 동작을 지정하지만, 어셈블리어는 한 가지 동작까지 세세하게 지정한다. 어셈블리의 명령 포맷 주로 IA-32를 사용한다. 어셈블리의 기본 형태 : 명령어..