Pēdējoreiz atjaunināts: 28 sept., 2026

XLSX vs. XLSM Security: How Spreadsheet Macros Expose Your Network

Excel failu drošība paskaidrota: XLSX, XLSM un makro riski

Gadu desmitiem Microsoft Excel ir bijis universāls biznesa operāciju dzinējs. Tas līdzsvaro uzņēmumu budžetus, vizualizē sarežģītus datu kopumus, uzrauga krājumus un nodrošina analītiskās caurules gandrīz visās nozarēs.

Tomēr tā pati skaitļošanas elastība padara izklājlapas par pastāvīgu mērķi kibera uzbrucējiem. Uzbrucēji ir izmantoti izklājlapas kā ieročus jau kopš 1990. gadu beigām, kad parādījās makro vīrusi. Lai gan Microsoft un sistēmu administratori ir ieviaduši vairākus aizsardzības slāņus — piemēram, failu formātu atdalīšanu un noklusējuma makro bloķēšanu — sociālais inženierisms un smalkas arhitektūras riski turpina padarīt uzbrukumus, kas vērsti uz Excel, aktuālus.

Lai izveidotu izturīgu drošības stāvokli, izstrādātājiem, administratoriem un pieredzējušiem lietotājiem jāskata zem darblapas saskarnes. Ir būtiski izprast, kā darbojas pamatā esošais OpenXML formāts, kā .xlsx un .xlsm atšķiras arhitektūras līmenī, kā arī kā darbojas makro izpildes mehānismi, lai aizsargātu mūsdienu galapunktus.

1. Mūsdienu Excel failu anatomija: OpenXML atklāts

Pirms Microsoft Office 2007 izlaišanas Excel galvenokārt saglabāja failus, izmantojot īpašus bināros formātus, visvairāk izceltu .xls formātu (kas regulēts ar Binary Interchange File Format, jeb BIFF8). .xls failos datu ieraksti, formatēšanas definīcijas, formulas un Visual Basic for Applications (VBA) makro plūsmas tika pakotas vienā strukturētā glabāšanas konteinerā. Tas padarīja programmatūras pārbaudi grūtu un ļāva uzbrucējiem slēpt ļaunprātīgus slēptas skriptus necaurspīdīgajos binārajos sektoros.

Sākot ar Excel 2007, Microsoft ieviesa Office Open XML (OOXML) standartu (standartizēts kā ECMA-376 un ISO/IEC 29500). Saskaņā ar OOXML Excel darblapas vairs nav monolītiskas bināras masas. Tā vietā tās ir saspiestas arhīvi, kas satur hierarhisku XML dokumentu struktūru, attiecību tabulas un iegultus multivides resursus.

Iekš ZIP konteinerā

Ja jūs ņemat jebkuru standarta modernu Excel darba grāmatu un pārdēvējat tās paplašinājumu uz .zip, jūs varat izpakot tās saturu ar jebkuru standarta dekompresijas rīku:

my_workbook.xlsx (extracted)
│
├── [Content_Types].xml        <-- Registry of MIME types and structural parts
├── _rels/                     <-- Package-level relationship mappings
│   └── .rels
├── docProps/                  <-- Metadata (author, creation date, revision)
│   ├── app.xml
│   └── core.xml
└── xl/                        <-- Core spreadsheet contents
    ├── workbook.xml           <-- Workbook-level parameters and sheet list
    ├── styles.xml             <-- Cell styles, fonts, and borders
    ├── sharedStrings.xml      <-- Unique string index for performance optimization
    ├── _rels/
    │   └── workbook.xml.rels  <-- Sheet and component dependencies
    └── worksheets/
        ├── sheet1.xml         <-- Raw cell values, formulas, and grid geometry
        └── sheet2.xml

Šī struktūras pārmaiņa nodrošināja tūlītējus drošības ieguvumus:

  1. DPI (Dziļā Paketes Pārbaude) & Vārtejas Redzamība: Drošības ierīces, starpnieki un galapunktu aģenti var izpakot arhīvu reāllaikā un analizēt vienkārša teksta XML koku, lai identificētu aizdomīgus virknes, ārējus URL vai iegultus objektus.
  2. Deterministiska Faila Validācija: Ja fails apgalvo, ka tas ir OpenXML dokuments, bet pārkāpj shēmas ierobežojumus, Excel atsakās to atvērt vai palaidīs to izolētā atjaunošanas režīmā.
  3. Formāta Atdalīšana: Microsoft atdalīja parastos aprēķinu izklājlapas no failiem, kas spēj izpildīt iegultus procedurālus skriptus.

2. XLSX vs. XLSM: Arhitektūras robeža

Galvenā atšķirība starp .xlsx un .xlsm ir tā, vai faila struktūra ļauj iekļaut izpildāmus makro projektus.

Īpašība / Dimensija.xlsx (Excel OpenXML izklājlapas).xlsm (Excel makro-iespējots izklājlapas fails)
MIME satura veidsapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.ms-excel.sheet.macroEnabled.12
VBA glabāšanas konteinerisStingri aizliegts. Nevar saglabāt vbaProject.binAtļauts. Satur xl/vbaProject.bin
Dabiskais izpildes risksNeglīdzīgi makro izpildei; ierobežots līdz formulas injekcijai/DDEAugsts; var izpildīt automatizētu VBA kodu, reaģējot uz darblapas mijiedarbību
OpenXML stingra shēmaAtbilst stingriem, makro-brīviem XML definīcijāmIetver definīcijas vēsturiskām un modernām automatizācijas paplašinājumiem
Lietotāja vizuālais indikatorsStandarta zaļa izklājlapas ikonaIzklājlapas ikona ar izsaukuma zīmi

Izpildes mehānisms: Kāpēc XLSX nevar palaist makrokomandas

Bieži uzdodams jautājums starp jaunajiem administratoriem un izstrādātājiem ir: Kas notiek, ja uzbrucējs paņem ļaunprātīgu .xlsm failu, injicē izpildāmu kodu un pārdēvē faila paplašinājumu uz .xlsx?

Īss atbilde: Fails neizpildīs makro.

Excel nebalstās tikai uz faila paplašinājumu, lai noteiktu izpildes noteikumus. Atverot failu ar nosaukumu .xlsx:

  1. Excel pārbauda zip saturu un atsaucas uz [Content_Types].xml.
  2. Īstajā .xlsx failā visi definētie satura tipi pārstāv standarta datu elementus (piemēram, worksheet, sharedStrings vai styles).
  3. Ja uzbrucējs manuāli injicē kompilētu VBA straumi (xl/vbaProject.bin) .xlsx paketē un atjaunina attiecības, Excel sastopas ar skaidru shēmas pretrunu:
    • Tas redz .xlsx paplašinājumu, kas ir saistīts ar satura tipiem, kas norāda uz makro iespēju.
    • Excel izmet fatālu integritātes kļūdu: "Excel nevar atvērt failu ‘filename.xlsx’, jo faila formāts vai paplašinājums nav derīgs. Pārbaudiet, vai fails nav bojāts…"
  4. Ja uzbrucējs atstāj iekšējos tipus neskartus, neatregistrējot bināro failu, Excel uzskata vbaProject.bin par neatreferētu, pamestu pielikumu zip arhīvā un pilnīgi izmet to ielādes cikla laikā.

Tādējādi, fails, kas stingri darbojas kā īsts .xlsx konteiners, nevar izpildīt iebūvēto VBA kodu. Tomēr tas nenozīmē, ka .xlsx faili ir brīvi no visiem uzbrukuma veidiem, kā tas tiek izklāstīts vēlāk šajā ceļvedī.

3. Makro riski un uzbrukuma dzīves cikls

Makrokomandas tika izstrādātas, lai automatizētu atkārtotus grāmatvedības, finanšu modelēšanas un datu manipulācijas uzdevumus, izmantojot Visual Basic for Applications (VBA). Tā kā VBA tika izveidots darba vietas automatizācijai, tam tika piešķirta plaša piekļuve pamata Windows operētājsistēmai caur Component Object Model (COM), Windows Script Host (WSH) un tiešiem Win32 API izsaukumiem.

Kad neuzticama makrokomanda izpildās, tā darbojas ar tieši tādiem pašiem privilēģijām kā pieteicies lietotājs. Tā nav ieslēgta virtualizētā JavaScript‑stila pārlūkprogrammas smilškastē.

+--------------------------------------------------------------------------------+
|                             ATTACK LIFECYCLE                                   |
+--------------------------------------------------------------------------------+
                                       │
                                       ▼
  [ Delivery & Evasion ]  ──────► Spear-phishing email with .xlsm, .xlam, or .zip.
                                       │
                                       ▼
  [ Social Engineering ]  ──────► Lures victim to bypass Protected View ("Enable Content").
                                       │
                                       ▼
  [ Auto-Execution ]      ──────► Auto_Open() or Workbook_Open() triggers automatically.
                                       │
                                       ▼
  [ System Invocation ]   ──────► VBA creates COM objects (WScript.Shell, WinHttp.WinHttpRequest).
                                       │
                                       ▼
  [ Payload Retrieval ]   ──────► Spawns hidden PowerShell/cURL to fetch staging binary.
                                       │
                                       ▼
  [ Post-Exploitation ]   ──────► In-memory execution, credential theft, lateral movement.

Biežākās makro ieejas tehnikas

  1. Automātiskās izpildes āķi: Uzbrucēji novieto savu ieejas punktu iekšintrēnos notikumu apstrādātājos, piemēram, Sub Auto_Open() vai Private Sub Workbook_Open(). Tiklīdz lietotājs piešķir izpildes atļaujas, šīs rutīnas tiek aktivizētas, neprasot nekādus klikšķus izklājlapā.

  2. Maskēšana un Stomping:

    • Virkņu maskēšana: Nesošie dati (payloads) slēpj URL un sistēmas izsaukumus, izmantojot rakstzīmju masīvus, XOR kodēšanu, Base64 atkodēšanu vai vides mainīgo savienošanu (piem., Chr(112) & Chr(111) & Chr(119)...).
    • VBA Stomping: VBA pastāv divās formās vbaProject.bin iekšpusē: interpretētais pirmkods un kompilētais p-kods (pseido-kods, kas mērķēts uz konkrēto Office versiju, kas to kompilēja). Uzbrucēji var pilnīgi izdzēst skaidrā teksta pirmkodu, atstājot tikai kompilēto p-kodu. Daudzi pamata antivīrusu risinājumi un statiskie analizatori pārbauda tikai pirmkoda plūsmu, atstājot p-kodu neatklātu, līdz to izpilda atbilstoša Office versija.
  3. Dzīvošana no zemes (LotL): Modernie ļaundabīgi makrosi reti nogulstas .exe failu tieši uz diska, kas nekavējoties brīdinātu galapunktu noteikšanas un reaģēšanas (EDR) aģentus. Tā vietā tie mijiedarbojas ar iebūvētiem sistēmas rīkiem:

    • Instancē WScript.Shell, lai izpildītu komandrindas argumentus.
    • Izsaucot PowerShell.exe ar izpildes politiku, kas apiet (-ExecutionPolicy Bypass -WindowStyle Hidden).
    • Izsaucot vietējās Win32 API caur Declare PtrSafe Function CreateProcess vai VirtualAlloc, lai injicētu čaulkodu tieši sistēmas atmiņā.

4. Citi izklājlapu draudu vektori (pāri standarta VBA)

Videi aizsargāšana pret .xlsm failiem ir tikai puse no cīņas. Pretinieki arī izmanto mehānismus, kas darbojas neatkarīgi no tradicionālās VBA.

Dinamiskā datu apmaiņa (DDE) un CSV injekcija

Excel ietver mantoto protokolu, ko sauc par Dynamic Data Exchange (DDE), kas paredzēts datu apmaiņai starp darbināmām lietojumprogrammām (piemēram, tiešraides akciju cenu datu plūsmas no atsevišķas programmas uz Excel šūnu).

  • Kā darbojas formulas injekcija: Kad izklājlapas šūna sākas ar rakstzīmēm, piemēram, =, @, + vai -, Excel interpretē saturu kā formulu. Ja uzbrucējs kontrolē ievadi, kas tiek eksportēta uz izklājlapu (piemēram, nefiltrēts lauks “Comments” tīmekļa lietojumprogrammā, kas eksportēts uz CSV vai XLSX), viņš var injicēt:
    =cmd|'/C powershell.exe -w hidden -enc <base64_payload>'!A0
    
  • Kad atvērta, Excel novērtē formulu, brīdina lietotāju ar uzvedni par ārējās lietojumprogrammas palaišanu, un, ja tas tiek apstiprināts, izpilda sistēmas čaulu.

Excel 4.0 (XLM) mantotie makro

Pirms VBA tika ieviests 1993. gadā, Excel izmantoja uz formulām balstītu makro sistēmu, kas pazīstama kā Excel 4.0 (XLM) makrosi. Šie makrosi atrodas atsevišķās makro lapās, nevis atsevišķā VBA projektā.

Tā kā XLM makrosi tiek rakstīti kā šūnu formulas (piemēram =EXEC("calc.exe")), tie apiet daudzus standarta VBA statiskās pārbaudes dzinējus. Uzbrucēji izvēlējās XLM makrosus 2010. gadu beigās un 2020. gadu sākumā, lai izvairītos no automatizētas noteikšanas, pirms Microsoft tos noklusējuma izslēdza mūsdienu uzņēmumu versijās.

Ļaundabīgi ārējie savienojumi un OLE objekti

Parasts .xlsx darba grāmata joprojām var radīt risku, izmantojot ārējos resursus:

  • Iegultie OLE paketes: Uzbrucējs var ievietot izpildāmu failu, kas maskēts kā iegulta PDF ikona, tieši darblapā.
  • Ārējās darba grāmatas saites un tīmekļa vaicājumi: XLSX var saturēt ārējās atsauces, kas automātiski izsūta HTTP GET pieprasījumus uz uzbrucēja kontrolētajiem komandu un vadības (C2) serveriem, atverot failu, galvenokārt tiek izmantoti izpētes vai netNTLM hešu savākšanas uzbrukumos.

5. Uzņēmuma nostiprināšana un dziļas aizsardzības stratēģijas

Aizsardzība pret Excel izraisītām draudiem prasa slāņotu pieeju, kas aptver tīkla pārbaudi, sistēmas konfigurāciju, piekļuves kontroles un operatīvos procesus.

+─────────────────────────────────────────────────────────+
|                  ENTERPRISE DEFENSE LAYERS               |
+─────────────────────────────────────────────────────────+
|  PERIMETER: Drop inbound .xlsm, .xla, and .xltm at mail |
|  gateway unless cryptographically signed or exempted.   |
+---------------------------------------------------------+
|  IDENTITY & POLICY: Enforce ASR rules and apply         |
|  Mark of the Web (MotW) macro execution blocks.         |
+---------------------------------------------------------+
|  RUNTIME: Hook AMSI into Office to evaluate dynamic     |
|  VBA buffers directly before execution.                 |
+---------------------------------------------------------+
|  STORAGE: Restrict macro execution exclusively to       |
|  managed, centralized Trusted Locations.                |
+─────────────────────────────────────────────────────────+

1. Uzspiest tīmekļa atzīmi (MotW) makro bloķēšanu

  1. gadā Microsoft atjaunināja Office lietojumprogrammu noklusējuma uzvedību: makrokomandas failos, kas nāk no interneta, ir pēc noklusējuma bloķētas.

Kad lietotājs lejupielādē failu caur pārlūkprogrammu vai ārēju klientu, Windows pievieno failam alternatīvo datu plūsmu (ADS) ar nosaukumu Zone.Identifier (3. zona norāda uz internetu). Failiem ar šo marķējumu Excel pilnībā deaktivē makrokomandas un parāda sarkanu drošības baneri: > “DROŠĪBAS RISKS: Microsoft ir bloķējis makrokomandu izpildi, jo šī faila avots nav uzticams.”

Administratīvā darbība: Nodrošiniet, ka šī uzvedība tiek īstenota caur grupas politikām un to nevar pārrakstīt galalietotāji:

  • GPO ceļš: User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center
  • Iestatījums: Iespējot “Bloķēt makrokomandu izpildi Office failos no interneta”.

2. Konfigurēt uzbrukuma virsmas samazināšanas (ASR) noteikumus

Organizācijām, kas izmanto Microsoft Defender for Endpoint, vajadzētu aktivizēt galvenos uzbrukumu virsmas samazināšanas noteikumus, kas ir īpaši izstrādāti Office lietojumprogrammām:

  • Block Office applications from creating child processes (GUID: D4F940AB-401B-4EFC-AADC-AD5F3C50688A)
    • Novērš, ka Excel palaistu PowerShell, CMD vai skriptu dzinējus.
  • Bloķēt Office lietojumprogrammas, lai tās neievietotu kodu citos procesos (GUID: 75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84)
  • Bloķēt Win32 API izsaukumus no Office makrokomandām (GUID: 92E6390C-CF9E-43CE-BD8C-0E6F0FE66680)

3. Izmantot pretvīrusu skenēšanas saskarni (AMSI)

Mūsdienīgas Microsoft 365 versijas integrē VBA izpildi tieši ar AMSI. Pat ja uzbrucējs lieto sarežģītu virkņu paslēpšanu vai VBA pārrakstīšanu, VBA izpildlaika dzinējs nodod rekonstruētās, nešifrētās komandas jūsu instalētajam antivīrusu/EDR dzinējam tieši pirms izpildes, milisekundes precizitātē. Pārliecinieties, ka jūsu galapunktu aizsardzība aktīvi uzrauga AMSI izpildlaika notikumus.

4. Pāriet uz uzticamiem vietām un digitālajiem sertifikātiem

Organizācijām, kas ikdienas operācijām paļaujas uz automatizētām izklājlapām:

  • Novērst brīvi esošus XLSM failus lietotāju Lejupielāžu vai darbvirsmas mapēs.
  • Izmantot uzticamas vietas: Ierobežot makro izpildi tikai uz lasīšanai paredzētiem tīkla koplietojumiem, ko pārvalda IT administratori.
  • Koda parakstīšana: Noteikt, ka visi iekšēji izstrādātie makro jāparaksta kriptogrāfiski, izmantojot sertifikātu, ko izdevusi uzņēmuma publiskās atslēgas infrastruktūra (PKI). Konfigurēt Excel, lai izpildītu tikai digitāli parakstītus makro un klusi bloķētu neparakstītos.

6. Izstrādātāja perspektīva: drošas automatizācijas izveide

Ja jūs veidojat programmatūru, kas analizē, ģenerē vai patērē Excel failus (piemēram, Python cauruļvadi, izmantojot pandas/openpyxl, Node.js mikroservisi vai C#/.NET lietojumprogrammas), piemērojiet šos izstrādes aizsardzības pasākumus:

  1. Noraidīt negaidītus failu formātus augšupielādes robežā: Ja jūsu lietojumprogramma sagaida finanšu pārskatus, stingri pārbaudiet, vai ienākošie faili atbilst .xlsx. Pārbaudiet iekšējos maģiskos baitus (standarta zip galveni 50 4B 03 04) un pārliecinieties, ka arhīva indeksā nav vbaProject.bin ierakstu, pirms saglabājat mākoņa spaiņos vai datubāzes glabātavās.

  2. Attīrīt datus no formulas injekcijas: Eksportējot lietotāju radīto ievadi CSV vai XLSX failos, pievienojiet apostrofu (') vai atstarpi jebkuram šūnas sākumam, kas sākas ar bīstamām rakstzīmēm (=, +, -, @, \t, \r):

    def sanitize_for_spreadsheet(value: str) -> str:
        if value and value[0] in ('=', '+', '-', '@', '\t', '\r'):
            return f"'{value}"
        return value
    
  3. Pāriet no VBA uz Office Scripts vai Web papildinājumiem: Mūsdienīgai uzņēmuma automatizācijai pakāpeniski izslēdziet veco VBA pilnībā:

    • Office Scripts: Rakstīti TypeScript valodā, Office Scripts darbojas izolētā mākoņa vidē un darbojas gludi gan tīmekļa, gan darbvirsmas versijās, neatklājot vietējās OS sistēmas izsaukumus.
    • Office Web Add-ins: Izveidoti, izmantojot standarta HTML, CSS un modernu JavaScript, tīmekļa papildinājumi sazinās caur pārvaldītām JavaScript API un ir izolēti no lokālās operētājsistēmas.

7. Kopsavilkuma kontrolsaraksts izklājlapu drošībai

  • Uzspiest .xlsx pēc noklusējuma: Prasīt, lai visi standarta lietotāju darba plūsmas saglabātos kā makro-brīvi .xlsx.
  • Bloķēt no interneta izcelsmes makro: Apstipriniet, ka MotW politikas izpilde ir izplatīta visā organizācijā, izmantojot GPO vai Intune.
  • Iespējot ASR noteikumus: Aizliegt Office produktiem palaist komandu interpretatorus vai bērnu procesus.
  • Novērst Excel 4.0 (XLM): Nodrošiniet, ka vecākas XLM makro dzinēji ir neatgriezeniski atspējoti visās darba stacijās.
  • Sanitizēt lietojumprogrammu eksportus: Aizsargāt CSV un Excel ģenerēšanas rutīnas pret CSV/formulu injekciju.
  • Pāriet uz Office Scripts: Pārvietot vecākos administratīvos makro uz TypeScript vadītiem Office Scripts un pārvaldītām API.

Izskatot izklājlapas ne tikai kā dokumentu failus, bet kā strukturētus programmatūras konteinerus, kas nes izpildes iespējas, drošības komandas un izstrādātāji var efektīvi neitralizēt vienu no vecākajiem uzbrukuma vektoriem uzņēmuma skaitļošanā.

Biežāk uzdotie jautājumi (BUJ)

J1: Vai fails, kura nosaukums beidzas ar .xlsx, var palaist ļaundabīgu makro?

Nē, OpenXML standarts stingri aizliedz makro kodu .xlsx failos, un Excel noraidīs vai izņems jebkuru VBA projektu, kas ievietots īstajā .xlsx konteinerā.

J2: Ko man darīt, ja Excel fails mani lūdz “Iespējot rediģēšanu” vai “Iespējot saturu”?

Piešķiriet atļaujas tikai tad, ja pazīstat sūtītāju un gaidījāt šo failu; šis uzvednes logs ir galvenais kontrolpunkts, kas ļauj neuzticamiem makro kodiem izpildīt kodu.

J3: Kā Microsoft Excel nosaka, vai fails nācis no interneta?

Windows pievieno lejupielādētiem failiem slēpto "Mark of the Web" (Zone.Identifier) straumi, kas norāda Excel atvērt tos aizsargātā skatā un pēc noklusējuma bloķēt makro.

J4: Vai CSV faili ir drošāki nekā XLSX un XLSM faili?

CSV faili nevar saturēt iebūvētos VBA makro, taču tie joprojām ir pakļauti formulas injekcijas uzbrukumiem, ja tie satur ļaunprātīgas komandas, kuras Excel izpilda atverot failu.

J5: Kā mūsdienu Office skripti atšķiras no tradicionālajiem VBA makro?

Office Scripts darbojas uz TypeScript smiltētas izpildes vidē, kas neļauj tiem piekļūt jūsu lokālajai failu sistēmai, komandrindai vai operētājsistēmas API.

Skatīt arī