본문 바로가기

전체 글

(63)
악성코드 분석 _ downloader.exe @ 05_downloader.exe 파일 분석 - 분석 환경 : Windows7 - 분석 파일 : downloader.exe - 사용 도구 : exeinfope, PEview, Dependency Walker, string1, PeStudio, Procexp, SysAnalyzer, hashcalc, IDA Pro, OllyDbg downloader.exe 분석에 앞서 다운로더 악성코드의 특징에 대해 말해보자. 다운로더는 인터넷에서 다른 악성코드 컴포넌트를 다운로드하고 시스템에서 실행한다. 따라서, 새로운 악성코드를 다운로드하기 위해 URLDownloadtoFile 을 사용하고, 실행하기 위해서 ShellExecute , WinExec 등을 호출한다. URLDownloadtoFile 웹에 있는 파일을 다..
악성코드 선수지식 01_악성코드 선수지식 1. 악성코드 - 악의적인 동작을 실시하는 코드가 들어간 실행 파일/프로그램/문서를 의미한다. 2. 악성코드 배포 목적 - 개인 및 기업 정보를 탈취 및 수집 - 시스템/디스크/파일 파괴, 삭제, 조작 - 랜썸웨어와 같은 금전 요구 - 광고 노출 및 홍보 수단 3. 악성코드 분석 단계 1) 패킹 여부 확인 - 실행 파일이 패커에 의해서 압축되어 있는지, 프로덱터에 의해서 보호되어 있는지 확인하는 단계 - 분석 도구 : exeinfope, PEiD, PEview, OllyDbg, ImportREC, LoadPE 2) 기초 정적 분석 - 악성코드 파일을 실행하지 않고, 간략하게 분석하는 단계이다. - 악성코드 분석시 가장 먼저 실시하는 단계이다. - 분석 내용 : PE 파일 관련 내용..
reverse_assembly UPX packing/unpacking 32_패킹&언패킹 - 분석 환경 : Windows7(32bit) - 분석 도구 : exeinfope, PEview, upx, OllyDbg 1. UPX - 운영 체제에서 사용하는 실행 파일 압축/해지 프로그램 - 대략 60% 정도의 압축율을 제공한다. 2. 'Packing_1.exe' 파일 UPX 패킹 1) upx을 이용하여 'Packing_1.exe' 파일을 'Packing_1_pack.exe'으로 패킹한다. 2) 'Exeinfope'를 이용하여 패킹/언패킹 유무를 확인한다. 3) 'PEview'를 이용하여 패킹/언패킹 PE 구조를 확인한다. - 원본 파일(Packing_1.exe) -> SECTION .rdata -> IAT (DLL/함수 전체 목록 확인 가능) - 패킹 파일(Packing_1_pac..
reverse_assembly SWITCH 29_어셈블리(switch) - 분석 환경 : Windows7(32bit) - 분석 도구 : OllyDbg, VS2008 1. 'switch' 구문 - 조건에 만족하면 코드를 실행하는 조건문이다. - 대신, if 구문과 차이점은 변수 값에 따라서 다른 동작을 실시할 수 있다. - 또한, 'break' 제어문과 같이 사용하여 조건에 만족되면 코드를 실행하고 조건 검사를 종료할 수 있다. - switch 구문 형식은 다음과 같다. switch (변수) { case 값1: // 값이 '1'인 경우 실행하는 코드 break; case 값2: // 값이 '2'인 경우 실행하는 코드 break; default: // 위에 조건이 아닌 경우 마지막에 실행하는 코드 } 1) VS 2008을 이용하여 'switch.ex..
reverse_assembly 기본명령어 JG 28_어셈블리(JG) - 분석 환경 : Windows7(32bit) - 분석 도구 : OllyDbg, VS2008 1. JG(JA 비슷함) - 형식 : JG [Code Address] - 내용 : Operand 1이 Operand 2보다 큰 경우 해당 주소로 점프한다. - 예제 : JG 401140 - 해석 : Operand 1이 Operand 2보다 큰 경우 401140으로 점프한다. - 조건 : Operand 1 > Operand 2 1) VS 2008을 이용하여 'jg.exe' 파일을 제작한다. - 파일 -> 새로 만들기 -> 프로젝트 -> 빈 프로젝트 -> 위치(04_테스트) & 이름(jg) -> 확인 - '소스 파일' 우클릭 -> 추가 -> 새 항목 -> 'C++ 파일(.cpp)' 선택 -> 이..
reverse_assembly 기본명령어 JL 27_어셈블리(JL) - 분석 환경 : Windows7(32bit) - 분석 도구 : OllyDbg, VS2008 1. JL(JB 비슷함) - 형식 : JL [Code Address] - 내용 : Operand 1이 Operand 2보다 작은 경우 해당 주소로 점프한다. - 예제 : JL 401140 - 해석 : Operand 1이 Operand 2보다 작은 경우 401140으로 점프한다. - 조건 : Operand 1 새로 만들기 -> 프로젝트 -> 빈 프로젝트 -> 위치(04_테스트) & 이름(jl) -> 확인 - '소스 파일' 우클릭 -> 추가 -> 새 항목 -> 'C++ 파일(.cpp)' 선택 -> 이름(jl) -> 추가 #include #include #pragma comment(lib, "us..
reverse_assembly 기본명령어 JGE @ 26_어셈블리(JGE) - 분석 환경 : Windows7(32bit) - 분석 도구 : OllyDbg, VS2008 1. JGE(JAE 비슷함) - 형식 : JGE [Code Address] - 내용 : 비교 결과 값이 '0'이거나(ZF=1), 결과 값이 큰 경우 해당 주소로 점프한다. - 예제 : JGE 401140 - 해석 : ZF=1 이거나, 결과값이 큰 경우 401140으로 점프한다. - 조건 : Operand 1 >= Operand 2 1) VS 2008을 이용하여 'jge.exe' 파일을 제작한다. - 파일 -> 새로 만들기 -> 프로젝트 -> 빈 프로젝트 -> 위치(04_테스트) & 이름(jge) -> 확인 - '소스 파일' 우클릭 -> 추가 -> 새 항목 -> 'C++ 파일(.cpp)'..
reverse_assembly 기본명령어 JLE 25_어셈블리(JLE) - 분석 환경 : Windows7(32bit) - 분석 도구 : OllyDbg, VS2008 1. JLE(JBE 비슷함) - 형식 : JLE [Code Address] - 내용 : 비교 결과 값이 '0'이거나(ZF=1), 결과 값이 작은 경우 해당 주소로 점프한다. - 예제 : JLE 401140 - 해석 : ZF=1 이거나, 결과값이 작은 경우 401140으로 점프한다. - 조건 : Operand 1 새로 만들기 -> 프로젝트 -> 빈 프로젝트 -> 위치(04_테스트) & 이름(jle) -> 확인 - '소스 파일' 우클릭 -> 추가 -> 새 항목 -> 'C++ 파일(.cpp)' 선택 -> 이름(jle) -> 추가 - 파일 -> 모두 저장 -> 닫기 2) 'cl' 명령어를 이용한 ..