목록전체 글 (347)
서비스 보면 여러 이름들이 있는데 등록된 서비스를 실행시켜준다. services.msc로 등록된 서비스들을 확인할 수 있다. svchost.exe에 등록되어있는 서비스 중 하나를 확인했다. 실행 파일 경로는 svchost.exe -k netsvcs를 실행한다. 올리디버거로 과정을 파악한다. oep로 bp를 걸고 이동해준다. resource 관련 루틴으로 가기 위해 403a2c로 이동해주었다. bp를 걸어준다. 함수 내부로 진입해준다. 문자열을 합치는 작업을 하고 있다. 분기문이 나오는데 eax값의 따라 분기문이 나뉜다. 이는 403100함수의 반환 값이다. 해당 함수는 reg 관련된 함수들이 나오며 netsvcs가 가능하면 64to32를 세팅하는 듯하다. 이게 되냐 안 되냐에 따라 달라지는 것 같다. 해..
Resource 관련된 함수를 Import에서 추적해 따라왔다. 해당 함수를 참조하는 곳을 찾기 위해 그래프를 출력해준다. 4032f0에서 403050을 호출하니 4032f0을 탐색한다. OpenSCManagerA가 보인다. 해당 포인트에 서비스 등록 로직이 있다는 것을 추측했다. 진행하면 분기문이 나온다. 왼쪽은 service를 만드는 작업을 하는듯 했다. 64to32라는 문자열도 볼 수 있다. 중간에 0x401230이라는 함수가 계속 보이는데 이는 레지스트리 관련된 함수들이 존재했다. 알아보기 쉽게 함수 이름을 바꾸어주었다. 그 아래 분기문이 나뉘고 아래 포인트를 확인하면 우리가 참조해서 올라왔던 함수 0x403050이 있었다. 0x4032a0에는 OpenService와 StartService가 있었..
이어서 기초동적분석을 진행했다. xp환경과 다르게 win7에서는 악성코드가 잘 실행되지 않아 제대로 분석을 진행할 수 없었다. sysAnalyzer을 이용했다. 하나의 프로세스가 진행된다. svchost.exe의 파일이 실행되는것을 알 수있다. Service이름은 64to32이다. 5408의 pid가 4개의 포트를 열었다. 원래는 dll파일이 실행되어야 하는데 win7에서는 dll 프로세스를 죽여버려 확인할수가 없다. 저번에 추출했던 dll이 svchost.exe에 올라와 실행되는 구조이다. 레지스트리 변경 사항이 있다. value값이 64to32이다. 만들어진 파일을 보면 64to32가 있다. size가 비교적 큰것을 알수가있다. service또한 64to32로 등록되어있다. 통신을 위해 pipe에도 ..
간단한 기초 정적분석을 진행했다. 게임핵으로 나온다. c++로 컴파일 되어있다.. 패킹은 되어있지 않다. 컴파일 시간은 2013년도이다. pestudio로 확인해보았다. 레지스트리 수정, 프로세스 열거, 악성 string 및 funcitons 참조 등 여러 악성 행위가 탐지된다. dll파일 하나가 있는데 추출을 진행했다. Resource Hacker를 통해 dll파일 추출을 진행했다. dll파일을 다시 pestudio로 올린 결과이다. ServiceMain이라는 api를 발견할 수 있는데 서비스형 파일이 어떻게 동작하는지 다음에 분석하기로 한다.
IDA를 통해 분석을 진행했다. 처음 GetConsoleWindow의 반환 값을 ShowWindow의 인자 값으로 실행을 시킨다. 창을 내리는 역할을한다. 그리고 뮤텍스를 생성한다. WSAStartup은 소켓 프로그래밍을 할 때 처음 나오는 함수이다. socket을 생성하고 1337번으로 바인드 시키는 코드이다. 실패 시 bind error을 출력한다. 쭉 진행하면 스레드를 생성하는 구문이 나온다. lpStartAddress인자가 이 프로그램의 핵심 코드이다. 진입을 해서 분석을 시작한다. Mutex를 가져와 WaitForSingleObject를 실행한다. 뮤텍스의 소유권을 가져오는 모습이다. 그리고 바로 소유권을 해제한다. 이유는 모르겠다. 두 개의 파이프를 만들고 GetstartupInfoA를 실행한..
SysAnalyzer을 사용했다. port번호는 1337이다. netstat으로 찍어도 1337 프로세스가 실행 중인 것을 확인할 수 있었다. API log를 확인하면 통신을 할려했으나 오류로 인해 실패한 모습이다. 아마 운영체제 버전에 따라 다른듯하다. 뮤텍스들이다. 소켓이 정상적으로 이루어지면 pipe에 값이 뜨는데 프로그램이 비정상적으로 돌아가 생성되지 않는다. 이에 대한 원인들은 다음 IDA를 활용하여 확인을 해볼 것이다.
exe파일을 virustotal을 통해 확인해 본 결과 트로이목마로 식별된다. PEview로 정적분석을 진행했다. 컴파일된 날짜를 확인했다. IAT를 확인했다. KERNEL32.dll에서는 뮤텍스 생성, 쓰레드 프로세스 관련 함수들, 파이프, 시간 함수 등을 발견할 수 있었다. USER32.dll에서는 ShowWindow를 실행한다. 이는 창을 가리기위한 용도로 사용한다. WSOCK32.dll은 소켓 프로그래밍에 사용된다. Exeinfo로 exe파일의 형식을 확인해주었다. SubSystem에 Win Console이 있는데 이는 cmd와 같은 느낌이다. 패킹이 되어있지 않고 c++로 컴파일되어있는 것을 확인할 수 있다.
IDA로 분석을 진행했다. StartServiceCtrlDispatcherA를 실행한다. Malservice를 서비스명으로 지정했다. MSDN을 보면 -StartServiceCtrlDispatcherA Connects the main thread of a service process to the service control manager, which causes the thread to be the service control dispatcher thread for the calling process. 서비스 제어 관리자가 호출하는 서비스 제어 함수를 명시한다. sub_401040이 실제 악성코드가 구성되는 함수라고 보면 된다. OpenMutexA를 통해 참값이 나오면 프로세스를 종료한다. 분기문을 지나..