일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- FTZlevel10
- 8086CPU레지스터
- 딥러닝
- 파이썬신경망
- 소프트맥스함수
- 딥러닝파이썬
- 보안
- 밑바닥부터시작하는딥러닝
- 백준알고리즘
- 버퍼오버플로우
- 활성화함수파이썬
- 정보보안
- 알고리즘
- 스트림암호
- 항등함수
- 신경망파이썬
- BOF
- 인공지능
- 머신러닝
- C언어 알고리즘
- BOJ
- C알고리즘
- 달고나bof
- 신경망 학습
- 신경망구현
- c언어
- 신경망
- 파이썬
- 백준
- C언어알고리즘
- Today
- Total
HeeJ's
[05]악성코드분석_6주차 본문
악성코드 고급 정적 분석 : 아이다 활용
- PE, COFF, ELF 지원
- x86/ x64 지원
- 함수 발견, 스택 분석, 지역 변수 확인 등 수 많은 기능 제공
- 과정의 모든 부분을 수정, 조 작, 재배피, 재정의
- 분석 진행 상황 저장 기능(주석 작성, 라벨링, 함수 이름 붙이기)
- 막강한 플러그인 지원(C Decompiler)
그래프 모드
- 그래프 형태로 출력
- 화살표 색깔과 방향 이용
( 빨강 : 조건 점프 거짓
초록 : 조건 점프 참
파랑 : 무조건 점프 )
텍스트 모드
- 기존의 보기 방식
- 메모리 주소, 옵코드, 섹션명 등 출력
( 실선 : 무조건 점프
점선 : 조건 점프 )
분석에 유용한 윈도우
- 함수 윈도우 : 실행 파일 내의 모든 함수를 목록화
- 이름 윈도우 : 함수, 명명된 코드, 명명된 데이터와 문자열을 포함해 이름 관련 모든 주소를 목록화
- 문자열 윈도우 : 5자 이상의 ASCII 무낮열 출력
- 임포트 윈도우 : 임포트되는 모든 함수 목록
- 익스포트 윈도우 : 익스포트 되는 모든 함수 목록 (DLL 분석 시 용이)
- 구조체 윈도우 : 데이터 구조 레이아웃 목록
address 관련
sub_xxxxxxxx : 함수 시작 링크
Loc_xxxxxxxx : 목적지로 점프하는 링크
Offset_xxxxxxxx : 메모리 내의 오프셋 링크
상호 참조
1. xref로 표기
2. 함수롤 호출한 위치나 사용한 문자열 위치를 알림
3. 함수의 호출된 파라미터로 이동
- 함수를 인식하고 이름을 기입하여 지역 변수와 파라미터로 분리하는 기능
( 스텍에서 ebp, ret 등을 기준으로 지역 변수와 파라미터 구분 )
-> 전역변수는 stack에 저장되지 않고, 따로 메모리에 적재된다.
함수 이름 변경
가상 주소와 스택 변수에 자동으로 이름을 정하지만,
임의대로 더 좋은 이름으로 수정할 수 있음
악성코드 주요 행위 분석
주로
1. 백도어
2. 백신을 죽임
3. 레지스트리/서비스 자동 실행
4. 권한 상승
5. DLL Injection
1. 윈도우 API (Application Programming Interface)
- 대부분의 악성코드는 윈도우 플랫폼에서 동작
- 운영체제와 밀접하게 상호작용
핸들(Handle)
- 윈도우, 프로세스, 모듈, 메뉴, 파일 등과 같이 운영체제에서 오픈되거나 생성
- 객체나 메모리 위치를 참조한다는 점에서 포인터와 같다
파일 시스템 함수
- 악성코드가 시스템과 상호작용하는 일반적인 방식은 파일을 생성, 수정해 파일명을 구별하거나 기존 파일 명 변경
- 식별자로 사용 가능
- 파일을 생성해 그 파일에 웹 브라우징 내용을 저장한다면 해당 스파이웨어 형태일 가능성 높음
1. CreateFile() : 파일을 생성하고 열 때 사용
기존 파일, 파이프, 스트림, I/O 장치를 열고 새로운 파일을 생성
dwCreationDiposition 인자 - 함수가 새로운 파일을 생성하는지, 기존 파일을 오픈하는지 여부 제어
2. ReadFile()/WriteFile() : 파일을 읽고 쓰는데 사용
두 함수 모두 파일을 스트림 형태로 운영
ReadFile은 파일을 몇 바이트씩 끊어 읽는다.
3. CreateFileMapping()/MapViewOfFile() : 파일 매핑은 파일을 메모리로 로드해 쉽게 조작할 수 있게 함
CreateFileMapping : 파일을 디스크에서 메모리로 로드
MapViewOfFile : 매핑된 베이스 주소 포인터를 변환, 메모리 내 파일에 접근, 파일 포맷 파싱에 용이
특수 파일 : 드라이브 문자와 폴더명으로 접근할 수 없는 파일도 존재
공유 파일 : 네트워크 상에 저장된 공유 폴더에서 디렉터리나 파일에 접근
네임 스페이스를 통해 접근 가능한 파일 : 운영체제 내에서 네임스페이스를 통해 접근
- 네임 스페이스 : 고정된 숫자의 폴더와 각각 저장하는 다른 유형의 객체
물리적 장치 접근하여 파일처럼 읽음
윈도우 레지스트리
- 운영체제와 설정이나 옵션 같은 프로그램 구성 정보 저장
- 수직 구조의 정보 데이터베이스 -> 성능 향상
- 네트워킹, 드라이버, 시작, 사용자 계정, 다른 정보 등 거의 모든 윈도우 구성 정보 저장
- 레지스트리를 활용하는 악성코드
ㄴ 영구 데이터나 설정 데이터 저장
ㄴ 컴퓨터 부팅시마다 자동으로 동작할 수 있게 수정
서비스
- 악성코드가 새로운 코드를 실행하는 또 다른 방식은 서비스로 설치하는 방법
- 백그라운드 애플리케이션으로 실행하는 서비스를 사용, 프로세스나 스레드 없이 실행
(코드가 스케쥴링돼 사용자 입력 없이 윈도우 서비스 관리자가 실행)
- 서비스 이용의 이점
ㄴ SYSTEM 권한으로 실행 (admin보다 상위)
ㄴ 운영체제 시작 시 자동으로 실행
- 서비스 API
ㄴ OpenSCManager, CreateService, StartService
버클리 호환 소켓
- Winsock 라이브러리에서 주로 구현
- socket, bind, listen, accept, connect, recv, send 의 API 함수를 사용하고 있다면 socket을 이용한 네트워크 작업을 하고 있을 수도 있다.
WinINet API
- Winsock API 보다 상위 수준
- WIninet.dll에 저장
- HTTP, FTP와 같은 프로토콜을 구현
- InternetOpen, InternetOpenUrl, InternetReadFile
DLL
- 현재 윈도우에서 다양한 애플리케이션끼리 코드를 공유하는 라이브러리를 사용
- 다른 애플리케이션에 의해 실행할 수 있는 export 함수 포함
- 정적 라이브러리는 dll 이전에 사용하던 표준 라이브러리로 프로세스를 별도로 메모리에 로드
'<Information Security> > <Malware>' 카테고리의 다른 글
[06]악성코드분석_7주차 (0) | 2021.11.16 |
---|---|
[04]악성코드분석_5주차 (0) | 2021.11.03 |
[03]악성코드분석_4주차 (0) | 2021.10.06 |
[02] 악성코드 분석_3주차 (0) | 2021.09.29 |
[01] 악성코드 분석_2주차 (0) | 2021.09.21 |