GNU/Linux >> Znalost Linux >  >> Linux

Detekce Log4Shell pomocí Wazuh

Tentokrát se dozvíte o Detection Log4Shell s Wazuh

Apache Log4J je jednou z nejběžnějších logovacích knihoven v Javě, která se používá hlavně pro chybové zprávy. Je součástí několika vysoce ceněných aplikací, včetně mimo jiné iCloud, Twitter a Minecraft.

Nedávno byla v Log4J 2 od Apache detekována zranitelnost zero-day nazvaná Log4Shell s CVE CVE-2021-44228, která umožňuje zlomyslným aktérům spouštět útoky Remote Code Execution (RCE). To znamená, že útočník může vzdáleně posílat příkazy serveru se zranitelnými aplikacemi.

Dotčené verze Apache Log4j 2 jsou 2.0-beta92.15 .

Ve skutečnosti verze 2.15.0 což byla počáteční oprava této chyby zabezpečení, bylo později zjištěno, že je stále zranitelná. Proto se doporučuje aktualizovat na verzi 2.16.0 který zakáže JNDI a úplně odstraní %m{lookups} .

Existuje několik způsobů, jak bránit svůj systém proti této zranitelnosti a potenciálním útokům:

  • Spuštění skenování za účelem zjištění, zda ve vašem systému existuje zranitelná verze Apache Log4j 2.
  • Oprava chyby zabezpečení aktualizací na Apache Log4j 2 verze 2.16.0 nebo deaktivaci JNDI.
  • Vytvoření pravidel detekce, která monitorují protokoly připojení a přístupu na web za účelem zjištění pokusů o zneužití.

Klíčem k boji se současnou vlnou útoků je včasná detekce zranitelnosti pro okamžitou opravu a neustálé sledování všech aktiv, aby bylo možné identifikovat, kdy dojde k pokusu o zneužití této zranitelnosti.

V následujících částech se podíváme na to, jak může Wazuh pomoci s monitorováním a detekcí této chyby zabezpečení.

prosím zkontrolujte kroky instalace wazuh zde “https://unixcop.com/wazuh-the-open-source-security-platform/”

Skenování zranitelných verzí Apache Log4j 2

K tomu použijeme zásady Wazuh SCA (Security Configuration Assessment). Zásady SCA jsou napsány ve formátu YAML a používají se ke spouštění kontrol pro posílení systému; v mnoha případech do této kategorie spadá také detekce zranitelného softwaru.

Pokud není uvedeno jinak, všechny následující konfigurace byly provedeny na straně serveru Wazuh. Obvykle není potřeba upravovat místní konfiguraci monitorovaných agentů.

Nejprve vytvoříme nový soubor zásad na /var/ossec/etc/shared/default/log4j_check.yml :

policy:
  id: "log4j_check"
  file: "log4j_check.yml"
  name: "Log4j dependency check"
  description: "This document provides prescriptive guidance for identifying Log4j RCE vulnerability"
  references:
    - https://nvd.nist.gov/vuln/detail/CVE-2021-44228
    - https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance
requirements:
  title: "Check if Java is present on the machine"
  description: "Requirements for running the SCA scan against machines with Java on them."
  condition: all
  rules:
    - 'c:sh -c "ps aux | grep java | grep -v grep" -> r:java'
checks:
  - id: 10000
    title: "Ensure Log4j is not on the system or under 2.16"
    description: "The Log4j library is vulnerable to RCE on versions between 2.10 and 2.15."
    remediation: "Update the log4j library to version 2.16 or set log4j2.formatMsgNoLookups to true if possible."
    condition: none
    rules:
      - 'c:find / -regex ".*log4j.*.jar" -type f -exec sh -c "unzip -p {} META-INF/MANIFEST.MF | grep Implementation-Version" \; -> r: 2.10.| 2.11.| 2.12.| 2.13.| 2.14.| 2.15.'
  - id: 10001
    title: "Ensure Java is not running or is properly configured"
    description: "The Log4j library is vulnerable to RCE on versions between 2.10 and 2.15."
    remediation: "Update the log4j library to version 2.16 or set log4j2.formatMsgNoLookups to true if possible."
    condition: any
    rules:
      - 'c:sh -c "ps aux | grep java | grep -v grep" -> r:java && r:Dlog4j2.formatMsgNoLookups=true'
policy:
  id: "log4j_check"
  file: "log4j_check.yml"
  name: "Log4j dependency check"
  description: "This document provides prescriptive guidance for identifying Log4j RCE vulnerability"
  references:
    - https://nvd.nist.gov/vuln/detail/CVE-2021-44228
    - https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance
requirements:
  title: "Check if Java is present on the machine"
  description: "Requirements for running the SCA scan against machines with Java on them."
  condition: all
  rules:
    - 'c:sh -c "ps aux | grep java | grep -v grep" -> r:java'
checks:
  - id: 10000
    title: "Ensure Log4j is not on the system or under 2.16"
    description: "The Log4j library is vulnerable to RCE on versions between 2.10 and 2.15."
    remediation: "Update the log4j library to version 2.16 or set log4j2.formatMsgNoLookups to true if possible."
    condition: none
    rules:
      - 'c:find / -regex ".*log4j.*.jar" -type f -exec sh -c "unzip -p {} META-INF/MANIFEST.MF | grep Implementation-Version" \; -> r: 2.10.| 2.11.| 2.12.| 2.13.| 2.14.| 2.15.'
  - id: 10001
    title: "Ensure Java is not running or is properly configured"
    description: "The Log4j library is vulnerable to RCE on versions between 2.10 and 2.15."
    remediation: "Update the log4j library to version 2.16 or set log4j2.formatMsgNoLookups to true if possible."
    condition: any
    rules:
      - 'c:sh -c "ps aux | grep java | grep -v grep" -> r:java && r:Dlog4j2.formatMsgNoLookups=true'

Děláme to tak, aby byla politika SCA sdílena se skupinou agentů, což jsou ti, kteří budou provádět kontroly. V našem případě sdílíme zásady s výchozí skupinou, tedy default adresář.

Poznámka: Mějte prosím na paměti, že v závislosti na sledovaném systému find příkaz používaný k detekci zranitelných aplikací může být náročný na CPU.

Navíc, jakmile je vytvořen soubor zásad SCA, vlastník a skupina jsou upraveni, aby je mohl používat Wazuh:

chown ossec:ossec /var/ossec/etc/shared/default/log4j_check.yml

Dále jsme přidali blok SCA do /var/ossec/etc/shared/default/agent.conf povolit novou politiku pro agenty Wazuh, kteří patří k default skupina:

<agent_config>
  <sca>
    <enabled>yes</enabled>
    <scan_on_start>yes</scan_on_start>
    <interval>24h</interval>
    <skip_nfs>yes</skip_nfs>    
    <policies> 
      <policy>/var/ossec/etc/shared/log4j_check.yml</policy>  
    </policies>
  </sca>
</agent_config>

Níže jsme upravili místní nastavení konfiguračního souboru agenta Wazuh. To se provádí přímo na systémech, které jsou monitorovány, protože neexistuje způsob, jak toto nastavení odeslat ze serveru Wazuh. Účelem této úpravy je umožnit provádění příkazů v zásadách SCA, které jsou přijímány ze serveru Wazuh. To není nutné, pokud jsou tyto zásady SCA pro agenta místní.

echo "sca.remote_commands=1" >> /var/ossec/etc/local_internal_options.conf

Aby se nové nastavení projevilo, restartovali jsme agenta Wazuh. Server také automaticky vložil nový soubor zásad SCA.

Pod událostmi SCA můžeme vidět, že systém má aktuálně zranitelnou verzi Log4J 2.

Detekce pokusů o zneužití Log4Shell

Abychom přidali další vrstvu zabezpečení, vytvořili jsme pravidla, která budou detekovat pokusy o zneužití Log4Shell.

V tomto konkrétním případě jsme monitorovali protokoly webového přístupu a hledali konkrétní vzory, o kterých je známo, že se používají pro tento exploit.

Na náš server Wazuh jsme přidali následující pravidlo v /var/ossec/etc/rules/local_rules.xml soubor:

<group name="log4j, attack,">
  <rule id="110002" level="7">
    <if_group>web|accesslog|attack</if_group>
    <regex type="pcre2">(?i)(((\$|24)\S*)((\{|7B)\S*)((\S*j\S*n\S*d\S*i))|JHtqbmRp)</regex>
    <description>Possible Log4j RCE attack attempt detected.</description>
    <mitre>
      <id>T1190</id>
      <id>T1210</id>
      <id>T1211</id>
    </mitre>
  </rule>

  <rule id="110003" level="12">
    <if_sid>110002</if_sid>
    <regex type="pcre2">ldap[s]?|rmi|dns|nis|iiop|corba|nds|http|lower|upper|(\$\{\S*\w\}\S*)+</regex>
    <description>Log4j RCE attack attempt detected.</description>
    <mitre>
      <id>T1190</id>
      <id>T1210</id>
      <id>T1211</id>
    </mitre>
  </rule>
</group>

Také jsme restartovali správce Wazuh, abychom použili toto pravidlo:

systemctl restart wazuh-manager

Náš systém agentů provozuje webový server Apache.

V některých případech Wazuh možná již nemonitoruje webové protokolové soubory. Povolili jsme sběr dat protokolů úpravou konfigurační skupiny na straně serveru Wazuh. Za tímto účelem jsme do /var/ossec/etc/shared/default/agent.conf přidali následující blok :

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/apache2/access.log</location>
</localfile>

Abychom toto pravidlo otestovali, odešleme do monitorovaného systému webový požadavek se známými vzory Log4Shell. Požadavek lze odeslat z jakéhokoli zařízení, které má síťové připojení ke koncovému bodu:

http://your_system_ip_address/?x=${jndi:ldap://${localhost}.{{test}}/a}

Okamžitě jsme to zaznamenali pod bezpečnostními událostmi.

Závěr

Stručně řečeno, pomocí zásad SCA jsme byli schopni zjistit přítomnost chyby zabezpečení Log4Shell. Vytvořili jsme také pravidlo, které monitoruje protokol webového přístupu, aby zjistilo, kdy ve webovém požadavku existuje známý vzor zneužití.

To je užitečné pro ty, kteří chtějí zůstat proaktivní implementací opatření, která upozorní, když se objeví náznak zranitelnosti Log4Shell.


Linux
  1. Trasování jádra pomocí trace-cmd

  2. Příkaz Nohup s příklady

  3. JQ Command v Linuxu s příklady

  1. Nainstalujte Linux pomocí LVM

  2. Oprava binárního kódu pomocí Dd?

  3. Detekce 64bitové kompilace v C

  1. Nahradit du prachem v Linuxu

  2. wc Linux Command s příklady

  3. Linux ip příkaz s příklady