Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 8c27ae117aa7ad2a…

MALICIOUS

Office (OLE)

71.5 KB Created: 2010-02-26 09:12:00 Authoring application: Microsoft Office Word First seen: 2026-05-10
MD5: 4f0120b2b97e6d0a375f39dca9f331b6 SHA-1: 2bd0a684efd84b3528b44db4b673fb7939de6694 SHA-256: 8c27ae117aa7ad2a8739d7122eb082649a19a5a09fb925ac09b4417ddfc3fac0
62 Risk Score

Heuristics 3

  • Legacy WordBasic macro-virus markers high OLE_LEGACY_WORDBASIC_MACRO_VIRUS
    OLE Word document contains legacy WordBasic auto-execution macro markers such as AutoOpen plus ToolsMacro/MacroFile/fileMacro/globMacro or named historical macro-virus strings. These old Word 6/95 macro forms are not exposed as a modern VBA project, so normal VBA source extraction can miss them.
  • VBA macros detected medium OLE_VBA_MACROS
    Document contains VBA macro code
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://schemas.openxmlformats.org/drawingml/2006/main In document text (OLE body)

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source) 5403 bytes
SHA-256: 6ce8c8afd36d90093a2bf8a20d0ee0511c1f731c3c58b4da7382c2ff5256d451
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True

Attribute VB_Name = "AutoNew"

Public Sub MAIN()
WordBasic.ToolsMacro Name:="dspu", Run:=1
End Sub

Attribute VB_Name = "dspu"

Rem Makroname: DSPU (DateiSpeichernUnter) für Vertraege

Public Sub MAIN()
Dim MeinPfad$
Dim k
Dim l
Dim uvz
Dim uvz_$
Dim VertragName$
Dim MeinDateiName$
Dim w$
Dim x$
Dim y$
Dim z$
Dim w_
Dim x_
Dim y_
Dim z_
Dim n
Dim n_$
Dim MeinDokument$
Dim Antwort
MeinPfad$ = "H:\WINWORD\Vertraege"


Rem Erstellung einer Liste der Unterverzeichnisse von MeinPfad$

ReDim uvzListe__$(WordBasic.CountDirectories(MeinPfad$))
For k = 1 To WordBasic.CountDirectories(MeinPfad$)
    If Len(WordBasic.[GetDirectory$](MeinPfad$, k)) <= 3 Then
        uvzListe__$(l) = WordBasic.[GetDirectory$](MeinPfad$, k)
        l = l + 1
    End If
Next


Rem Dialogfenster, in dem ein nicht mehr als dreistelliges
Rem Unterverzeichnis eingestellt bzw. eingegeben werden kann.
Rem Es besteht auch die Möglichkeit zum Abbrechen

WordBasic.BeginDialog 304, 144, MeinPfad$
    WordBasic.Text 12, 8, 128, 13, "Unterverzeichnis", "Text1"
    WordBasic.ComboBox 13, 27, 160, 108, uvzListe__$(), "uvzAuswahl"
    WordBasic.OKButton 188, 9, 100, 21
    WordBasic.CancelButton 188, 38, 100, 21
WordBasic.EndDialog
Dim dlg As Object: Set dlg = WordBasic.CurValues.UserDialog
DialogAufruf:
uvz = WordBasic.Dialog.UserDialog(dlg)
Select Case uvz
    Case -1
        uvz_$ = dlg.uvzAuswahl
    Case 0
        WordBasic.FileClose 2
        GoTo Ende1
End Select
If uvz_$ = "" Then
    WordBasic.MsgBox "Kein Unterverzeichnis angegeben", 48
    GoTo DialogAufruf
ElseIf Len(uvz_$) > 3 Then
    WordBasic.MsgBox "Der Verzeichnisname darf nicht mehr als drei Stellen haben", 48
    GoTo DialogAufruf
End If


Rem Ermittlung des neuen Pfads und des Namens des dort vorhandenen
Rem Briefes mit der größten Nummer. Der neue Brief erhält dann eine
Rem Nummer, die um 1 größer ist; existiert noch keine Datei mit dem Namen
Rem XXXV??*.DOC oder heißt die letzte gefundene Datei XXXV9999.DOC, so
Rem erhält der neue Brief den Namen XXXV001.DOC.
Rem Es ist zu bemerken, daß entweder drei- oder vierstellige Zahlen
Rem vorkommen. Nach dem Sprung auf von drei- auf vierstellige Zahlen wird
Rem auch nur noch nach vierstelligen Zahlen gesucht.

MeinPfad$ = MeinPfad$ + "\" + uvz_$
VertragName$ = uvz_$ + "V??*.doc"
WordBasic.FileFind SearchPath:=MeinPfad$, Name:=VertragName$
MeinDateiName$ = WordBasic.[FoundFileName$](WordBasic.CountFoundFiles())
If WordBasic.[Right$](MeinDateiName$, 8) = "v999.doc" Then
    VertragName$ = uvz_$ + "V????.doc"
    WordBasic.FileFind SearchPath:=MeinPfad$, Name:=VertragName$
    MeinDateiName$ = WordBasic.[FoundFileName$](WordBasic.CountFoundFiles())
    If MeinDateiName$ = "" Then Let MeinDateiName$ = uvz_$ + "v999.doc"
End If
If MeinDateiName$ <> "" Then
    w$ = WordBasic.[Right$](Str(Asc(WordBasic.[Right$](MeinDateiName$, 8)) - 48), 1)
    x$ = WordBasic.[Right$](Str(Asc(WordBasic.[Right$](MeinDateiName$, 7)) - 48), 1)
    y$ = WordBasic.[Right$](Str(Asc(WordBasic.[Right$](MeinDateiName$, 6)) - 48), 1)
    z$ = WordBasic.[Right$](Str(Asc(WordBasic.[Right$](MeinDateiName$, 5)) - 48), 1)
    w_ = Asc(w$) - 48
    x_ = Asc(x$) - 48
    y_ = Asc(y$) - 48
    z_ = Asc(z$) - 48
    n = 1000 * w_ + 100 * x_ + 10 * y_ + z_ + 1
    If n < 10000 Then
        If n >= 1000 Then
            n_$ = WordBasic.[Right$](Str(n), 4)
        Else
            If n >= 100 Then
                n_$ = WordBasic.[Right$](Str(n), 3)
            Else
                If n >= 10 Then
                    n_$ = "0" + WordBasic.[Right$](Str(n), 2)
                Else
                    n_$ = "00" + WordBasic.[Right$](Str(n), 1)
                End If
            End If
        End If
    Else
        n_$ = "001"
    End If
    MeinDokument$ = uvz_$ + "V" + n_$ + ".DOC"
Else
    MeinDokument$ = uvz_$ + "V001.DOC"
End If


Rem Der Anwender soll nun entscheiden, ob der gerade ermittelte Name
Rem verwendet werden soll oder nicht. Wenn ja, wird die Datei bereits
Rem unter dem neuen Namen abgespeichert. Es besteht auch die
Rem Möglichkeit zum Abbrechen.

Antwort = WordBasic.MsgBox("Möchten Sie die neue Datei unter dem Namen " + UCase(MeinDokument$) + " speichern?", 35)
Select Case Antwort
Case -1
    WordBasic.ChDir MeinPfad$
    WordBasic.FileSaveAs Name:=MeinDokument$
    WordBasic.PrintStatusBar "Die Datei wurde unter dem Namen " + MeinDokument$ + " gespeichert."
Case 0
Case 1
    WordBasic.FileClose 2
End Select
GoTo Ende2
Ende1:
Ende2:
End Sub

Attribute VB_Name = "sp"

Public Sub MAIN()
Attribute MAIN.VB_Description = "Feld Speicherdatum aktualisieren"
Attribute MAIN.VB_ProcData.VB_Invoke_Func = "TemplateProject.sp.MAIN"
WordBasic.FileSave
WordBasic.StartOfDocument
WordBasic.ViewHeader
WordBasic.NextField
WordBasic.UnlockFields
WordBasic.UpdateFields
WordBasic.LockFields
WordBasic.NextField
WordBasic.UnlockFields
WordBasic.UpdateFields
WordBasic.LockFields
WordBasic.CloseViewHeaderFooter
WordBasic.FileSave
End Sub