악성코드 공부/CodeEngn Malware(8)
-
코드엔진 malware 08번
악성코드 8번 문제를 분석하기 전에 일단 문제 설명을 보면 악성코드 Flow의 일부이며 다른 악성코드를 실행하여 추가 감염을 일으키는 함수의 주소를 찾으라고 했다. 분석을 하기 전에 파일을 실행하는 api함수가 있는지 구글링을 해보니 ShellExecute함수가 있는 것을 확인할 수 있었다. 이제 문제를 분석해보자 전체적으로 살펴보니 ShellExecuteEx함수를 사용하는 구간을 찾을 수 있었다. 아래의 ShellExecuteEx함수는 위의 ShellExecuteEx함수를 실패할 경우 다시 한번 실행하는 구간이므로 다른 악성코드를 실행하여 추가 감염을 일으키는 함수의 주소는 004025F4이다.
2021.09.27 -
코드엔진 malware 07번
악성코드 7번 문제를 풀어보자 이 문제는 악성코드가 특정 사이트에 접속을 시도하는데 접속이 안될 경우 몇 초(ms) 단위로 재접속을 하는지에 대하여 물어보는 문제다. 전체적인 맥락이 6번 문제와 동일하다. 분석을 하면서 시간과 관련된 부분을 찾으니 아래 구간에서 96000h초 동안 Sleep 한 뒤 다시 재접속을 시도하는 것을 확인할 수 있었다. 몇 ms단위로 재접속을 하는지에 대하여 물었으므로 정답은 96000h를 10진수로 변환시킨 614400 ms이다.
2021.09.27 -
코드엔진 malware 06번
악성코드 6번째 문제를 풀어보자 Thread Mutex는 무엇인지 구하는 문제이다. 살펴보면 CreateMutex함수로 Mutex를 생성하는 것을 볼 수 있는데 어떻게 구성되어 있는지 살펴보면 아래와 같다. HANDLE CreateMutexA( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName ); IpMutexAttributes 매개변수는 SECURITY_ATTRIBUTES구조에 대한 포인터이고 이 매개변수 값이 NULL이면 자식 프로세스가 핸들을 상속할 수 없다. bIntialOwner 매개변수는 이 값이 TRUE(1)이고 호출자가 Mutex를 만든 경우 호출 스레드는 Mutex 개체의 초기 소유권을 얻는다. 즉 Mu..
2021.09.27 -
코드엔진 malware 05번
악성코드 분석 5번째 문제이다. 아래의 코드를 분석해보면 Table배열 안에 들어있는 값과 아래의 리턴 값이 encoded인 것을 보았을 때 Base64 인코딩이라는 것을 유추할 수 있었다. Base64 란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다. 데이터를 Base64로 바꾸는 과정은 다음과 같다. 우선 24비트 버퍼에 위쪽(MSB)부터 한 바이트씩 세 바이트를 집어넣는다. 그리고 남은 바이트가 3바이트 미만이라면, 버퍼의 남은 부분은 0으로 채워넣게 된다. 그리고, 버퍼의 위쪽부터 6비트[1]씩 잘라 그 값을 읽어, 다음에 정렬된 64개 "ABCDE..
2021.09.27 -
코드엔진 malware 04번
Malware Analysis L04 APM(Apache, PHP, MySQL) 환경의 사이트를 운영 중인 L 씨 현재 SQL Injection 악성코드의 공격을 받고 있다 PHP 설정 파일에서 어떤 옵션을 설정해야 안전한가? SQL Injection공격을 안전하게 하려면 php.ini 파일의 magin_quotes_gpc를 On으로 설정한다. 이 설정은 Get, Post, Cookie로 전달되는 데이터에서 '(single quote), \(back slash), NULL(0x00) 문자 등 특수문자를 일반 문자로 치환해주어 SQL Injection 공격을 방지한다. 일반 문자로 치환하는 방식은 특수문자 앞에 \(back slash)를 붙이면 특수문자의 기능이 제거되고 일반 문자로 처리된다. (예시: \..
2021.09.27 -
코드엔진 malware 03번
악성코드 분석 문제 3번째 문제이다 아래의 코드를 살펴보면 데이터를 길이의 절반만큼 더한 값을 value에 저장하고 홀수일 경우 data[i]
2021.09.27