트로이 목마 악성코드 분석 - 4

악성코드 및 포렌식|2021. 3. 28. 17:17

 

svchost.exe -k netsvcs 를볼수있는데

 

네트워크 서비스들을 동작시켜준다

 

그밑에보면 services들을 보면은

 

내용이 등록된서비스를 동작시킵니다.

 

첫번쨰 automatic updates를 보면

 

 

서비스네임이랑 다보면

automatice updates인데

 

svchost.exe -k netsvcs 를 동작시키는데

즉 실행시킬때 같이 맞물려서 동작시킵니다.

 

 

 

그리고 애네들은 전부 다 windows 32에 있다는 소리입니다

 

악의적으로 설치한 것들이고

 

 

 

 

 

 

 

 

 

이렇게 다 netsvcs에서 실행되고

 

 

 

관련된 dll들을 볼수있습니다.

 

 

이렇게 검색으로 확인이가능하다.

svchost에서 돌아가는 것을 확인가능

 

 

여기 맨오른쪽으로 검색

 

 

이제 ida와 올리디버거를 같이사용한다.

 

 

 

 

 

ida에서 바로들어가면 system32t

에서 뮤텍스관련된 것들이 나온다

 

 

뮤텍스를 검사하고 루틴을 따지는데

 

 

 

뮤텍스가 성공적으로 맞는 경우에는 실행이되고 그렇지 않으면 중지가된다.

 

 

계속 진행을 한다.

 

 

 

 

메인에있는 401000을 갑니다.

 

 

 

 

 

 

그리고 브레이크 포인트를 겁니다.

 

 

 

 

 

 

그리고 실행을 하서보면 createmutex를 하고있고

 

 

 

 

 

바로 여기서 실행을 하게됩니다.

 

 

 

실행한 결과에따라서 결과값이 0000003C로 반환이 됬습니다.

 

 

 

0인지 테스트를 하게되고

 

0인경우에는

 

 

 

등록이되고 0이아닌경우에는 삭제를 합니다.

 

 

JE의 ZERO FLAG를 0으로 만들어버리고 그냥 넘어갑니다

 

그냥넘어가기위해서 ZERO FLAG를 0으로 만든다 원래는 같으면 점프를 하니까 그냥 점프안하게 하기위해서

 

 

test한 값이 같으면 zero flag가 1이라 점플하게됨

 

je는 같으면 점프하란 뜻

 

 

resourceService가 가장 주요한 동작을 하니까

 

저쪽으로 들어가서 

 

 

 

00403A2C 위치로 갑니다.

 

 

주소로 와서

 

 

 

 

브레이크 포인트를 겁니다.

이부분이 중요한 부분이니까

 

내부로 들어갑니다.

 

 

 

OpenSCManager를 하고있고

 

GetSystemDirectory를 하고있습니다.

 

 

 

그뒤에

wsprintfA를 하고있습니다

 

단순히 문자열을 합친것

 

 

그래서 이렇게 문자열이 합해짐

 

 

그리고 쭉진행을 하면

 

 

 

여기서 결과를 가지고 비교해서 루틴을 나눠질텐데

 

 

여기서 루틴이 나눠집니다.

 

 

eax는 sub403100 에서 가져오게되서

 

밑으로 내려와서

여기서 다시 쓴건데

 

 

sub 403100을

 

확인을 해봅니다.

 

 

 

 

 

단순하게 문자열

 

svchost로 가서  openkey가 되는지 안되는 지확인하는 것입니다.

 

 

 

 

여기서 문자열확인가능

 

 

 

 

netsvcs호스트가 가능하다면

 

 

64to32를 세팅을 바로 진행하고

 

 

쭉 진행이 됩니다.

 

 

 

그래서 성공을 하느냐 못하느냐에따라서 루틴이 갈리게됩니다.

 

 

 

 

 

 

그래서 test eax, eax의 경로가 0040312A입니다.

 

 

 

이부분에 들어왔습니다.

 

eax 0으로 반환을 받았는데

 

 

 

 

RegOpenKeYExA

 

function이 실패를 한경우해는 nonzero 값을

 

0을 반환하는 경우에는 errorsuccess를 반환합니다.

 

 

 

 

 

 

점프를 하게되는데

 

 

 

ida에서보면 이쪽으로 점프를 하게되는 것입니다.

 

RegQueryValueExA를 통해서 등록하는 그런 루틴을 보이고 있습니다.

 

 

 

 

 

 

 

 

여기까지 진행할거라고 생각할 수 있습니다.

0을 반환해서 성공하게되면 오른쪽으로 access 내용 쪽으로 가게되니까 그쪽을 따라가게 된다면

 

64TO32.dll을 확인이가능할 것이다.

 

 

 

 

 

 

004034B9 으로 올리디버거에서 가봅시다.

 

 

 

 

 

여기서 access 문구까지 잘 볼수가 있다.

 

 

 

 

여기서 파일을 삭제해버리면 실패 루틴을 따라갈테니까 ida에서 확인을해보니까

 

 

이왼쪽 루틴을 따라가게될 것이다

 

우리가 파일을 삭제해버리니까 64to32.dll을

 

 

 

그래서 이 00403509로 가게됩니다.

 

 

그리고 다시 find resource를 하게됩니다.

 

올리로 가게되면

 

 

 

openservice 를 다시하고있고 closeService를 다시하고있습니다.

 

 

dll생긴것을 확인 가능하다.

 

 

 

 

 

 

그리고 쭉가보면 service를 이런식으로 세팅을 하고있습니다.

 

service_auto_start등 

svchost.exe -k netsvcs 와관련된 것들이 있습니다.

 

이름을 64to32로하고 그런것들이 들어가 있습니다.

 

 

 

 

 

 

이 4036BA 루틴을 한번 따라가보게되면

 

 

 

 

4036BA는 서비스를 열고서 서비스쪽에서 실행될것이라고

 

 

 

서비스를 열고서 서비스쪽에서 실행될것이라고 볼 수 있습니다.

확인가능

 

 

 

 

여기서 CreateThread를 하고 끝나게되는데

ida에서 보면startaddress 즉 저번에봐썯ㄴ 내용을 볼수있다

 

파일을 찾는 내용 등

 

 

 

여러가지를 하고있어서 잘모르겠어서

 

sub_402100으로 들어갑니다.

 

 

 

 

이 명령어 주소로 한번 올리디버거로 찾아가 봅시다.

 

 

 

 

쓰레드로 실행된 루틴이 이거인데

 

결국에 실행은 안되고 멈추게 됩니다.

 

 

 

 

그래도 보게되면

 

file을 찾게되고

 

파일을 찾기만하지 추가적인 동작들은 확인이 불가능하고

 

 

파일을 카피하고 옮기고 그런 내용들이 존재해 있다는 것을 알수 있습니다.

 

 

 

 

 

이프로그램의 주요목적인 드롭은 성공이 한것입니다.

 

 

서비스에 자동 실행같은것도 있고 여러가지를 해봤습니다.

 

 

 

댓글()