본문 바로가기

C++ 악성코드 샘플 분석_3 본문

악성코드 분석

C++ 악성코드 샘플 분석_3

Seongjun_You 2022. 10. 9. 18:57

IDA를 통해 분석을 진행했다.

처음 GetConsoleWindow의 반환 값을 ShowWindow의 인자 값으로 실행을 시킨다.

창을 내리는 역할을한다.

그리고 뮤텍스를 생성한다.

 

 

WSAStartup은 소켓 프로그래밍을 할 때 처음 나오는 함수이다.

socket을 생성하고 1337번으로 바인드 시키는 코드이다.

 

실패 시 bind error을 출력한다.

 

 

쭉 진행하면 스레드를 생성하는 구문이 나온다.

lpStartAddress인자가 이 프로그램의 핵심 코드이다.

진입을 해서 분석을 시작한다.

 

Mutex를 가져와 WaitForSingleObject를 실행한다.

뮤텍스의 소유권을 가져오는 모습이다.

그리고 바로 소유권을 해제한다. 이유는 모르겠다.

 

 

두 개의 파이프를 만들고 GetstartupInfoA를 실행한다.

두 개의 파이프는 read, write 역할로 실행될 것이며,

cmd를 프로세스에 붙여 작업을 할 때 필요할 것으로 추측된다.

 

 

GetStartupInfoA를 통해 나온 구조체로 프로세스를 만든다.

 

 

프로세스가 실행 중인지 확인을 하며 분기문을 나눈다.

 

 

pipe의 데이터를 가져온다.

데이터가 있는지 없는지에 따라 분기문이 나뉜다.

 

 

데이터가 있을 경우 데이터가 없어질 때까지 작업을 진행한다.

 

아니면 recv를 진행한다.

recv는 예외처리를 많이 진행하기에 

쭉 내려와 진행을 했다.

 

여러 구문중 계속 반복을 돌리는 부분이 해당 코드이다.

데이터를 쓰고 프로세스가 살아있는 경우 다시 반복을 진행한다.

 

 

--------------------------------------------------------------------------------------------------------

해당 악성코드가 실행되지 않는 이유를 찾아보았다.

해당 구문을 진행한 후 스레드를 만들수있는 분기문으로 간다.

하지만 쓰레드를 만들지 않고 무한 반복문 늪에 빠지게 된다.

select의 반환 값이 나오지 않는다.

 

readfds의 인자 값들 확인하면 데이터가 들어있지 않다.

'악성코드 분석' 카테고리의 다른 글

malware sample 기초동적분석  (0) 2022.10.15
malware sample 기초정적분석  (4) 2022.10.10
C++ 악성코드 샘플 분석_2  (0) 2022.10.08
C++ 악성코드 샘플 분석_1  (0) 2022.10.05
연습샘플 분석 - 3  (0) 2022.09.16
Comments