악성코드 분석 방법 및 기초 정적 분석
·
악성코드 및 포렌식
간략 분석과 상세분석으로 나누어진다. 대충 올리디버거를 생각없이 들어가서 바로 삽질하는게아니라 전체적인 흐름. 지도를 가지고 들어가기위해서 하는것이다. 보통은 SHA1 과 MD5 를 가지고 같이 해쉬값을 하긴한다. 문자열을 검사하는 도구 strings Advapi32.dll 중요한 것을 시사하는데 서비스관리자나 레지스트리 ,자동시작 프로그램에 크게 관여 하기때문에 악성코드가 이것을 다루고있으면 주의깊게 봐야한다 자동실행 메커니즘 둘다 gui 쪽인 것들 user32.dll 인터페이스쪽이라생각하면된다. gdi32.dll 은 사용자에게 안보이게하거나 그런행위들이 있을수도있고 이두개가 들어가면 네트워크를 사용한다 생각하라 WS2_32.dll 윈도우 소켓 네트워크 하는일은 소켓을 만들어서 서비스포트를 만들어서 통..
upx 언패킹, 레나 듀토리얼 21번
·
악성코드 및 포렌식
cd Desktop upx.exe ori_notepad.exe 그럼 패킹이되고 파일의 size가 줄은것을 확인할 수 있습니다. 다시 줄이고 언패킹을 하려면 upx.exe -d ori_notepad.exe 를 진행하면됩니다. 그럼 파일 사이즈가 다시돌아오고 언패킹이 완료됩니다. upx.exe ori_notepad.exe -o ori_notepad._upx.exe 원본파일의 수정을하지말고 압축을 새로운 파일로 만듭니다 peview 로 원본파일과 패킹한 파일을 비교해보니까 조금씩 다릅니다 다 조금씩바뀐걸알 수있습니다. image_ section_hearder 도 바뀌고 전체적인 권한 설정이나 write도 하나 생겼습니다 특히 파일 사이즈도 달라졌다고알수있었습니다. 그리고 밑에는 실제적으로 파일사이즈가 존재하지..
패커
·
악성코드 및 포렌식
package 처럼 실행 소포를 보낼떄 패킹을 하는데 박스를 쌓아서 테이브를 하고 그러는데 패커도 그런작업입니다. 사람, 도구 같은 것입니다 실행파일을 패킹 해주는 애입니다. exe파일 같은거의 크기를 줄이고자 할려고했었습니다. pe 파일 내부 코드와 리소스(string, api 등)을 감추기 위한 목적을 가지고있습니다. 해킹등 코드 탈취같은것을 방지하기위해 패킹을 해놨다 예를들면 카톡 등 a가 b로 압축이되면 c는 압축을 해제하는 애입니다 -> 실행을하면 c부분에 실행이되고 A로 압축 해제가됩니다 o'ep 즉 original Entrypoint(프로그램이시작하는부분 -> A -> 패킹을 한뒤에는 다른 Entrypoint( 다른내용의 entrypoint) 를가진다 그래서 C 압축해제 -> 메모리상태에 위..
PE 파일의 개요
·
악성코드 및 포렌식
1. PE 구조 안티디버깅와 언패킹이 가장 리버싱을 방어하는 exe를 실행을 할수는있지만 내부에서 방해하는 안티디버깅 기법 이식가능 한 이란뜻은 리눅스, mac 이런느낌이아니라window 에서 이식할떄 실행가능한데 window xp->window7이런느낌으로 이식을하고 실행한다. 윈도우 로더는 운영체제에서 탑재된 것 souurce.obj파일은 시스템이 인식가능 한것. exeinfo, pestudio 최신 peview 는 눈에 잘보이게 prefram.py 코드를 눈으로 확인할수 있는 장점. c:\windows\system32\notepad.exe를 peview로 실행시켜봤습니다. 처음에 나오는데 IMAGE_DOS_HEADER인데 DOS에서 실행가능하도록 호환성을 제공하기위한 헤더입니다. MS도스의 시작을 ..
올리디버거 레나 듀토리얼 -1
·
악성코드 및 포렌식
control + f2 로 재시작 해서 보면 오른쪽 레지스터 창을보면 EIP 00401000 을 위치하고있는데 이것이 다음에 실행할 창이다. 이 명령어를 실행을 해보게되면 스탭 바이 스텝으로 진행하려면 F8 을 진행한다. 면 F8 을 진행한다. create file 쪽을보면 파일 또는 I / O 장치를 만들거나 엽니 다. 가장 일반적으로 사용되는 I / O 장치는 파일, 파일 스트림, 디렉토리, 물리적 디스크, 볼륨, 콘솔 버퍼, 테이프 드라이브, 통신 자원, 메일 슬롯 및 파이프입니다. 이 함수는 파일 또는 장치와 지정된 플래그 및 속성에 따라 다양한 유형의 I / O에 대해 파일 또는 장치에 액세스하는 데 사용할 수있는 핸들을 반환합니다. 이 작업을 트랜잭션 된 작업으로 수행하여 트랜잭션 된 I / ..
올리디버거
·
악성코드 및 포렌식
32bit 디버거 cpu명령창 레지스터 창 덤프창 스택창 이것은 머신코드 push 68 add 00 여기서 주석 입니다. 레지스터창은 변수들이 머가들어있는지 볼수가있다. m키를 누르면 어떤 exe파일이 메모리에 올라가있는지 확인을 할수있고 view -> threads 로 어떤게 실행되고있는지 알수있다. 브레이크 포인트는 멈추는 포인트이다 다양한 명령어가있으면 한줄에 브레이크 포인트를 걸수있다 쭉실행하다가 멈춘다는 의미라고하면된다.
리버싱 기초 - c 문법과 어셈블리어
·
악성코드 및 포렌식
temp라는 함수와 main이라는 함수를 가지고있다 근데 main 함수에서는 temp (1)를 하고있고 int b는 지역변수 a==1 이면 a++을해주고 아니면 b++ 을 해라~~~~ a== 1이면 b= 1 a != 1 이면b=2 이것을 어셈블리어로 만들게된다면 윗부분은 함수프롤로그 밑부분은 함수 에필로그 사실은 위에와 밑에는 딱히 분석할 필요가없고 중간부분이 중요합니다. 왜냐면 중간부분이 함수의 역할을 수행하기 때문에 loc_40101C는 사람이 쉽게 만들어놓은것입니다. 그냥 표시해둔것이다 이거왜 표시했냐면 JMP하는 구간을 쉽게 찾기위해서 표시한거 점프할때는 이런식으로 진행을 합니다. mov dword ptr [ebp-4], 1 이게 b가된다. cmp dword ptr [ebp+8], 1 이게 a가되..
리버싱 기초 -함수 호출 규약
·
악성코드 및 포렌식
main함수에서 sum이라는 함수를 호출하게될때!!!!!!! call을 하는 순간에 이곳으로 가게되고 push ebp ebp 를 넣는다 mov ebp, esp esp의 값을 ebp에 넣습니다 push ecx ecx를 넣는다 mov eax, [ebp+arg_0] ebp로부터 0(그냥 의미)번째의 argment를 가져오고 (a를 가져오는것) eax에 옮기고 add eax, [ebp+arg_4] ebp로부터 4번째의 argment를 가져오고 (b를 가져오는것) eax와 더한다 결국 eax 는 7이된다 왜냐하면 a,b에 3,4를 넣게되면 실제로는 ebp 8바이트 만큼 떨어진곳이 a ebp 12바이트만큼 떨어진곳이 b 만약 ebp arg_0 과 arg_4 로 나타나 있지만 실제로는 ebp 에서 +8바이트 , eb..
리버싱 기초 -어셈블리 명령어와 함수 호출 구조
·
악성코드 및 포렌식
위의 그림은 어셈블리로 c언어의 plus 처럼 만든것이다 esp는 스택 이라고 까먹지말고 [esp+8] 과 [esp+4 ]는 스택 영역에서 데이터를 8바이트와 4바이트를 꺼내옵니다 근데 a와 b라는 데이터를 꺼내오는것입니다 그리고 a와b를 edx와 ebx로 (다목적 ,더미값 특정한 목적이없는 레지스터)에 데이터를 임시로 저장하고 add edx, ebx 는 edx에 ebx를 더해라고 생각한다 뒤에있는것을 앞에 더한다. ebx에 4를 넣고 edx에 3을 넣는다고했을때 add edx, ebx의 각각의값은 ebx = 4로 변하지가 않는 대신에 edx = 3+4로 7이됩니다 오른쪽에있는것을 왼쪽에 저장한다고 생각하기 근데 add가되면 앞에는 edx=7 뒤에 ebx=4 그리고 mov eax, edx는 아까 3+4 ..
리버싱 기초
·
악성코드 및 포렌식
1. sysinternals suite 다운 2. 7z 다운 3.practical malware 샘플 다운로드 4.pestudio 다운 5. hxd 다운 올리디버거 관리자권한 실행 1. option ->add to explorer -> add -> done 2.option -> appearance 리버싱은 리버싱엔지니어링 역공학 이라고도 한다 어떤 프로그램의 소스코드로 돌려서 분석하는방법 c -> 10110 (M.C 머신코드 컴퓨터언어 ) -> 어셈블리 이렇게바꾸는건 컴파일과정 이렇게바꾸는건 디스어셈블 CPU 는 복잡하게 이런식으로돌린다. (어셈블리) c언어에서는 그냥 냉장고를 연다 열었으면 냉장고에 물을 꺼내먹는다 이런느낌이기 때문에 복잡하게돌린다는 것 02 어셈블리의 명령 포멧 IA-32 는 inte..
시스템 포렌식 - NTFS
·
악성코드 및 포렌식
NTFS 128번 섹터로 가니까 NTFS라고 나오게됩니다 여기서도 백업 섹터들이 존재하는데 128+ Total Sector(FE7FF) = 1042559 섹터 VBR 의 백업은 이곳에 나오게되는 것 입니다. ▲ VBR - 파티션, 부팅 정보저장 - Boot Code, Bios Parameter Block, BC and Error MSG, Signature - 시작주소 + 총 섹터 수 을 해주면 백업본 확인 가능 * data area 제일 끝부터 저장됨 ▲ MFT - 데이터 파일에 대한 메타 정보 - $MFT, $LogFIle, $Volume 등의 파일로 구성 ▲ VBR 주소 + (MFT 시작주소 * 8) = MFT 영역(128 + A9AA * 8 = 347,600 sector) 1클러스터는 8섹터 이파일..
시스템 포렌식 - FAT32 파일시스템 분석 및 복구
·
악성코드 및 포렌식
================================================== -윈도우 포렌식 – 페이지 파일과 스왑 파일 ▲ 페이지 파일(pagefile.sys)과 스왑 파일(swapfile.sys) - pagefile : 가상메모리 기반에서 메모리 부족시 HDD일부를 메모리처럼 활용 - swapfile : windows8 이후 생긴 페이지 파일의 일부. 특정 패턴의 작업을 위해 활용 ▲ 특정한 패턴 없이 운영체제에서 필요한 내용을 저장/삭제를 반복 ▲ strings.exe pagefile.sys > page.txt -파일시스템 분석 ▲ FAT32(File Allocation Table 32 bit) 파일 시스템 4gb이상을 절대 집어넣을수 없기도해서 거의쓰지않는다. 보안성이 떨어지고 안정..
시스템 포렌식 - 다운로드 기록 찾기
·
악성코드 및 포렌식
윈도우 포렌식 – 다운로드기록 찾기 ▲ 하드디스크에서 삭제된 정보를 어떻게 찾아낼까? - 실습환경 구성절차 FTK Imager - add attached devices - c:\의 root폴더 ▲ MFT 파일과 LogFile 파일을 시간대별로 분석 - MFT(Master File Table) : 모든 파일 및 디렉토리의 정보 analyzeMFT -f $MFT –o mfg.csv active : 현재 파일, inactive : 삭제 파일 - LogFile : 작업중인 파일의 복구를 위한 파일 생성/수정/삭제/변경 이력을 저장 - NTFS Log Tracker로 MFT, LogFile 불러와서 확인 어떤 파일을 삭제할때 윈도우에 삭제 기록도 사라지는지 궁금하다 winhex -> $MFT 여기서 Recover..
시스템 포렌식 - 시작, 브라우저 접속 기록
·
악성코드 및 포렌식
■디지털 포렌식의 정의 ▲ 컴퓨터를 이용한 범죄수사시 디지털 매체에 대한 증거를 확보하는 행위 ▲ 수집 순서 - 휘발성 정보 : 메모리, 프로세스, 자원, 캐시, 쿠키 등 - 비 휘발성 정보 : 하드디스크(이미지) ■디지털 포렌식 수집 정보 ▲ 시간, 사용자 정보, 시스템 버전, 파일 생성/삭제 이력, 메모리 덤프, 레지스트리, 악성 스크립트(웹쉘), 프로세스, 시작 프로그램/서비스, DLL 참조, 네트워크, USB 디지털 포렌식 도구(관리자 권한으로 실행) ▲ FTK Imager – 디스크 이미지 생성 ▲ FTK Toolkit/Autopsy – 디스크 이미지 분석 ▲ Everything – 지정된 시간대의 파일 검색 ▲ NTFS Log Tracker – NTFS 로그(파일 생성, 삭제) 분석 ▲ REG..
악성코드 분석 7 - 소니 픽쳐스 악성코드
·
악성코드 및 포렌식
악성코드 분석 7 - SONY Pictures ▲ PEStudio - Strings : C&C 서버 IP, DROP되는 파일, 파일 공유 관련 실행 명령어 확인 pestudio로 한번열어보니까 .exe들 여러개들이 저것을 건들이는 거라고 추측 할수있습니다 그리고 cmd ~~net share shared$를치는 것을 알수가있는데 네트워크 폴더 공유 명령어 였습니다. systemroot 폴더를 공유해서 grant 가 권한 부여인데 everyone 모두에게 공유한다 라고 추측할수 잇습니다. 그리고 igfxtrayex.exe가 존재하는데 원래는 내장 그래픽 카드 드라이버라고 생각하면됩니다. 근데 내장그래픽 드라이버라고 속이는 악성 코드일 수도 있다고 생각합니다. 그리고 comon32.exe는 원래는 common..
악성코드 분석 6 - 3.20 hastati 악성코드
·
악성코드 및 포렌식
악성코드 분석 6 - 320 우리가 봤던 유형이랑은 조금 다릅니다. ▲ PEStudio - PhysicalDrive%d : 물리 드라이버를 0-9번까지 연다 - MBR/VBR 파괴 %d는 임의의 숫자를 넣는것입니다. - taskkill = 안랩, 하우리 백신 무력화 pestudio는 실행파일 동적 분석프로그램 pasvc.exe는 v3를 죽이는것 ▲ Sysanalyzer - delay : 100 딜레이를 100으로 해서 sysanalyzer로 실행을 해봤을때 프로세스가 열려있고 포트가 하나 열려있습니다. 뭐이런게있고 다른거는 별로없습니다 이제 dump it으로 메모리 덤프를 떠서 진행해보려고했는데 갑자기 컴퓨터가 지혼자 꺼지게됩니다. . 컴퓨터가 꺼졌다. 그리고 갑자기 하드디스크가 파괴가 된느낌으로 진행이..
악성코드 분석 5 - WannaCry 랜섬웨어
·
악성코드 및 포렌식
sysanalyzer로 랜섬웨어 파일을 열어보니까 모든 zip파일들이 다 암호가 걸리고 답이없다... 악성코드 분석 5 - WannaCry ▲ vmware에서 host-only 모드로 바꾸고 실행 ▲ Sysanalyzer - delay : 100초 뒤에 실행이되네요 - Malware5를 실행하면 taskche.exe가 같이 실행된다. Malware5는 dropper, tasksche 가 악성행위를 수행하는 drop된 악성코드다. - mssecsvc2.0 서비스가 등록되었지만, 윈도우 서비스를 열면 보이지 않는다. 레지스트리 변경 이력을 참고해서 서비스가 등록된 곳으로 이동하면 displayname과 서비스 이름이 다른 것을 확인 - tasksche.exe도 임의의 이름으로 서비스에 등록됨 내컴퓨터 -> ..
악성코드 분석 4 - dropper
·
악성코드 및 포렌식
동적분석 메모리 덤프 메모리 포렌식 정적분석 동적분석을 위해서 sysanalyzer를 window xp에 바이러스 파일을 넣어서 진행을합니다. 저번처럼 확인해 보니까 sniffhit의 요청에보면 no-cache 저번에했던게 존재한다. 검사하니까 sniffhit에서는 이런게 있었고 dns 요청도 있었고 server 가 저기 나오는걸보면 좀의심이가네요 그리고 여기보면 malware4.exe가 삭제가 되는것도 나와잇습니다. 악성코드 분석 4 ▲ 악성코드 실행 로직을 분석하라 - malware4를 실행하면 새로운 파일(XXXXXXXXX.exe)을 생성하고 기존 malware4는 삭제된다. 따라서 malware4는 진짜 악성코드를 생성하기 위한 dropper 역할을 한다. 악성코드를 sysanalyzer로 실행을..
악성코드 분석 3 - packing
·
악성코드 및 포렌식
일반적인 악성코드는 vmware에서 실행이안되고 패킹을 해제하지않으면 안된다 패킹이 되있나 안되있나 방법은 peview로 확인을 해보면됩니다. 악성코드 분석 3 ▲ upx packing 해제 upx.exe -d Malware3.exe -o Malware3_unpacked.exe size증가가됬고 upx.exe는 포터블 익스포터블이라하고 실행시에는 다해제가 되긴하지만 정적분석이 불가능 하기떄문에 해제를 합니다. upx.exe를 이용해서 해제를합니다. 이 사이즈가 커진이유는 코드들의 압축을 다 풀었다고 생각하면됩니다. 패킹이 해제된 파일을 보니까 이제 이상한 upx0 upx1이 사라진 것을 알게됬습니다. 30초뒤에 시작이된다고하는데 그이유는 그냥 악성코드가 바로 실행되지 않기 때문이다. sniff hit을 ..
악성코드 분석 2 - 통신 포트를 찾는 과정
·
악성코드 및 포렌식
sysanalyzer로 나올떄 뭐 나오는게 없고 포트는나옵니다 메모리포렌식으로해도 별로 나오는게없습니다 통신포트가 안나오고그러면 동적분석이아니라 정적분석으로라도 진행해야합니다. ■악성코드 분석 2 ▲ OEP를 찾아라 - PEID에서 프로그램 정보가 unknown이므로 별도 OEP가 있을것으로 생각된다. - OLLY에서 1 step씩 실행하면 401000에서 push ebp, 하단에 시스템 함수를 호출하는 부분이 나오므로 OEP는 401000 ▲ 악성코드는 어떤 동작을 수행하는가? - 원격으로 명령을 실행하기 위해 cmd.exe를 실행하는 것으로 추측 - OEP 실행전의 arg1~3은 cmd.exe 실행 뒤 인자(dir, ipconfig 등)를 위한 변수이다. ====================== id..