NOTICE



1. 소 개


 오늘은 2016년 04월 11일에 수집된 .vbs 악성코드에 대해서 살펴보겠습니다. 해당 샘플은 백도어 기능과 함께 usb 드라이버를 감염시켜서 전파되도록 작성되어 있습니다. 2013년 전후에 Autorun과 함께 많이 사용된 코드입니다.




2. 파일 분석


 ‘spec.vbs’ 파일 코드입니다. 3,000 줄 정도의 주석 사이에 실행 코드가 숨겨져 있습니다.

 

[그림 2.1.] ‘spec.vbs’ 파일 코드


주석을 제거하고 난독화를 해제하면 다음 코드를 확인할 수 있습니다.

 

[그림 2.2.] ‘spec.vbs’ 파일 코드 단순화


 해당 코드의 동작이 어떻게 되는지 기능 별로 살펴보겠습니다.



2.1. 복제파일 생성 및 자동실행 등록


 ‘spec.vbs’를 실행시키면 instance 함수가 호출됩니다.

 

[그림 2.3.] instance 함수 호출


 다음은 instance 함수 코드입니다.

 

[그림 2.4.] instance 함수 코드


 세부적인 동작은 다음과 같습니다. “HKLM\software” 경로에 ‘spec’이라는 이름으로 KEY와 Value를 생성합니다. 이때 vbs 파일 위치에 따라 Value의 데이터 값이 달라집니다.


[그림 2.5.] 레지스트리 키 등록


[그림 2.6.] 레지스트리 키 등록 확인


 upstart 함수를 호출합니다. 그 결과 Temp 폴더 및 startup 폴더에 복제 파일이 생성되고 HKCU와 HKLM 루트키 경로에 해당 파일이 자동 실행되도록 등록됩니다.

 

[그림 2.7.] upstart 함수 호출


 

[그림 2.8.] upstart 함수 코드 확인

 

[그림 2.9.] 자동 실행 레지스트리 등록 확인

 

[그림 2.10.] 복제 파일 생성 확인


 ‘spec.vbs’의 실행 경로를 확인합니다. “%Temp%” 폴더 경로가 아니라면 “%Temp%” 폴더에 위치한 복제 파일을 실행하고 종료됩니다. “%Temp%” 폴더 경로에서 실행된 경우, opentextfile 메서드를 사용해서 해당 파일을 엽니다.


[그림 2.11.] ‘spec.vbs’ 실행 경로 확인



2.2. USB 감염 및 백도어 기능 수행


 usb 감염 및 백도어 동작 코드입니다. while 반복문을 사용해서 일정 시간 간격으로 반복 실행되도록 작성되었습니다.


[그림 2.12.] USB 감염 및 백도어 기능 수행 코드


2.2.1. usb 드라이버 감염 및 전파

 ‘spec.vbs’는 PC에 usb 드라이버가 연결되어 있는지 확인하고 전파합니다. 그 결과 감염된 usb로 다른 PC에 연결할 경우, 해당 PC 또한 ‘spec.vbs’에 감염됩니다. 다음은 usb 드라이버 전파 코드입니다.

 

[그림 2.13.] install 함수 코드


 먼저 upstart 함수를 호출하고 감염 PC에 연결된 모든 드라이버를 검색합니다. usb 드라이버 연결이 확인되면 다음 동작을 수행합니다.


1. usb 드라이버에 숨김 속성으로 ‘spec.vbs’를 복제합니다.


2. usb에 존재하는 모든 파일의 속성을 숨김으로 변경하고 바로가기 파일로 대체합니다.


3. usb에 존재하는 모든 폴더의 속성을 숨김으로 변경하고 바로가기 파일로 대체합니다.


 코드 실행 결과 다음과 같이 변경되는 것을 확인할 수 있습니다. (본 분석 환경에서는 대상 드라이버를 usb에서 로컬로 수정했습니다.)


[그림 2.14.] usb 감염 전파 전

 

[그림 2.15.] usb 감염 전파 후


 이때 바로가기 파일에 포함되어 있는 대상경로를 살펴볼 필요가 있습니다. 해당 파일 또는 폴더를 실행하는 코드와 함께 ‘spec.vbs’를 실행시키는 코드가 있습니다. 감염 usb에서 무심코 바로가기 파일을 실행하면 ‘spec.vbs’도 함께 실행되고 연결된 PC가 감염되는 것입니다.


바로가기 대상 경로: C:\Windows\system32\cmd.exe /c start spec.vbs&start explorer ProgramData&exit


[그림 2.16.] 바로가기 파일 대상 경로 확인


2.2.2. C&C 서버 연결 시도

 usb 드라이버 전파 기능이 수행되고 나면 post 함수를 호출해서 C&C 서버로 연결을 시도합니다. 감염 PC 정보(Hwid, ComputerName, UserName 등)가 함께 전송됩니다.

 

[그림 2.17.] post 함수 코드


[그림 2.18.] C&C 연결 시도


2.2.3. Command Code

 C&C 서버와 연결이 이루어지면 명령 수신 대기 상태가 됩니다. 다음은 명령 코드가 전달되었을 때 실행되는 코드입니다. select case 문을 사용해서 명령코드에 따라 동작을 달리합니다.


[그림 2.19.] 명령 실행 코드


명령에 따른 동작 정보를 간략하게 살펴보면 다음과 같습니다.





3. AV 제품 진단 결과


 해당 악성코드의 경우 V3-Lite에서 다음과 같이 진단하고 있습니다.


[그림 3.] V3 Lite 진단 결과


 이상으로 '[2016.04.11] Backdoor로 동작하는 VBS 악성코드 분석'에 대한 포스팅을 마치겠습니다.


  1. no picture 쩜핑고래 2016.05.25 14:18

    안녕하세요 시큐리티팩토리 글 잘보고 있습니다.
    다름이 아니라 일전에 VB로 작성된 악성코드 분석중 겪었던 일에 대해 의견을 여쭤보고자 합니다.

    VBDecompiler로 분석중에 비어있는 코드영역으로 JMP하는 문이 있었습니다.
    Olly로 확인해보니 실행코드를 동적으로 로드하여 점프하는것을 관찰할 수 있었는데요
    이처럼 동적으로 호출되는 (일종의 실행 언팩?) VB코드는 어떤식으로 분석하면 좋을지 궁금합니다.

  2. no picture 2016.05.25 14:40

    비밀댓글입니다