orcharhino und Sophos – eine Malware Spurensuche

Die Verwendung von Antiviren- und Security-Software ist Voraussetzung in den meisten Infrastruktur-Szenarien. Umso wichtiger ist es, diese auf das jeweilige Verwendungsszenario anzupassen. Der orcharhino als zentraler Dreh- und Angelpunkt im Rechencluster ist dabei von besonderer Bedeutung.

Nicht nur muss der Rechner selbst unkompromittiert sein, sondern es muss auch gewährleistet werden, dass die synchronisierten Repositories Malware-frei sind. Dieser Artikel beschäftigt sich mit der Anbindung von orcharhino an Sophos Central und Konfiguration von Sophos Antivirus für Linux in Bezug auf orcharhino (getestet in den Versionen orcharhino 5.10 und Sophos Antivirus für Linux 1.0.4.3). Sophos Central stellt die aktuelle Cloudverwaltungsplattform von Sophos dar. Die Anbindung eines orcharhino auf Basis von CentOS 7 erfolgt problemlos über das mitgelieferte Bootstrapskript. In diesem Beispiel wird ein orcharhino Host ‚or30‘ angehängt:

orcharhino host in sophos

Ein on-demand Scan des Hosts, also ein aktiv ausgelöster Scan, kann direkt über Sophos Central über den ‚Scan‘ Button gestartet werden. Eine entsprechende Ausgabe erfolgt nach Abschluss des Scans. In diesem Beispiel wurden zwei infizierte Dateien entdeckt:

sophos central scan

Werfen wir einen genaueren Blick auf die Funde. Beide Funde finden sich unter dem Verzeichnis ‚/var/lib/pulp‘. Damit handelt es sich um Dateien, die in einem orcharhino Repository synchronisiert wurden. Eventuell wurde ein nicht-vertrauenswürdiges Repository am orcharhino synchronisiert. Die Frage ist nun, um welche Dateien es sich genau handelt. Damit lässt sich die Bedrohung bereits deutlich besser einschränken.

Der Pfad ‚/var/lib/pulp/content/units/iso‘ verrät bereits, dass es sich um den Inhalt eines Katello file-Repositories handeln muss. Die Pfade ‚/var/lib/pulp/content/units/rpm‘, ‚/var/lib/pulp/content/units/drpm‘ und ‚/var/lib/pulp/content/units/deb‘ stehen für rpm, drpm und Debian Content. Das zu dem befallenen File assoziierte Katello Repository kann durch eine Datenbankabfrage herausgefunden werden. Zunächst muss ein Datenbanklogin auf dem orcharhino Server erfolgen:

mongo pulp_database

Mit dem Pfad aus der Fundmeldung kann die ID des entsprechenden Files identifiziert werden. In diesem Fall ist dies der Befehl:
> db.units_iso.find({"_storage_path": {$eq:
"/var/lib/pulp/content/units/iso/fc/006e7d7726b9810ac071a3173fbf583c1b0644098f38082cd23e4adcedb7d7"}}).pretty()

Die Ausgabe sieht wie folgt aus:
{
"_id" : "2b5c59e8-367a-4f17-9a6e-09ac5e6b9976",
"pulp_user_metadata" : {
},
"_last_updated" : 1639479305,
"_storage_path" : "/var/lib/pulp/content/units/iso/fc/006e7d7726b9810ac071a3173fbf583c1b0644098f38082cd23e4adcedb7d7",
"downloaded" : true,
"name" : "EICAR.sh",
"checksum" : "131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267",
"size" : 69,
"_ns" : "units_iso",
"_content_type_id" : "iso"
}

Handelt es sich um ein rpm oder ein Debian Paket können die analogen Befehle ‚units_rpm‘ und ‚units_deb‘ benutzt werden. In diesem Fall ist bereits der Paketname in Klaransicht im Filenamen enthalten. Ansonsten wird, wie in diesem Fall, der Klarname der entsprechenden Datei zurückgeliefert, hier ‚eicar.sh‘. Mit Hilfe der ID unter Feld ‚ID‘ lässt sich das dazugehörige Repositories identifizieren:

> db.repo_content_units.find({"unit_id": "2b5c59e8-367a-4f17-9a6e-09ac5e6b9976"}).pretty()
bd9c64b2-b753-4ec0-b316-442472bdc2aa
{
"_id" : ObjectId("61b87809345283bc53b2d192"),
"repo_id" : "a7b580a9-0c34-4864-abfc-4c8fb52c8b18",
"unit_id" : "2b5c59e8-367a-4f17-9a6e-09ac5e6b9976",
"unit_type_id" : "iso",
"updated" : "2021-12-14T10:55:05Z",
"created" : "2021-12-14T10:55:05Z"
}

und damit das eigentliche Repository

> db.repos.find({"repo_id" : "a7b580a9-0c34-4864-abfc-4c8fb52c8b18"}).pretty()

{
„_id“ : ObjectId(„61b8632a2c07265c65c9a543“),
„repo_id“ : „a7b580a9-0c34-4864-abfc-4c8fb52c8b18“,
„display_name“ : „Sophos-EICAR“,
„notes“ : {
},
„scratchpad“ : {
},
„_ns“ : „repos“,
„last_unit_added“ : ISODate(„2021-12-14T10:55:05.250Z“),
„last_unit_removed“ : ISODate(„2021-12-14T10:53:39.751Z“),
„content_unit_counts“ : {
„iso“ : 1
}
}

Ein Blick in das entsprechende Repository „Sophos-EICAR“ über die orcharhino GUI zeigt das fragliche File:

orcharhino GUI

Möchte man die Repositories von einem Scan ausnehmen (z.B. wenn die Repository-Inhalte bereits bei Download an einem Proxy überprüft werden), lässt sich das Verzeichnis /var/lib/pulp aus dem Scan über die Policy ausschließen.
Es ist zu beachten, dass bei Veröffentlichung eines Repositories unter einem Content View Softlinks unter var/lib/pulp/published auf die einzelnen Inhalte des Repositories finden. Diesen kann zu den eigentlichen Files gefolgt werden.
Sophos bietet ein weiteres Tool an, dass hilfreich für die Überwachung von orcharhino ist: ‚Live Discovery‘. Das Live Discovery Feature von Sophos Central kann dabei helfen den Zustand des orcharhino Servers zu überprüfen. So lassen sich z.B. die Prozesse mit offenen Ports auflisten um die entsprechenden orcharhino Dienste zu verifizieren:

sophos live discovery

Bitte beachten Sie:

  • Dies sind einige Beispiele wie, man die Überwachung eines orcharhino verbessern kann. Dieser Artikel zielt nicht darauf ab, alle Facetten einer Serverüberwachung zu behandeln. Besonders bei on-access Scans muss bei Verwendung der orcharhino Datenbankdienste auf die Performance und Integrität geachtet werden.
  • Mongo wird mit der nächsten major orcharhino Version 6 als backend für pulp abgelöst.
The following two tabs change content below.

Martin Grundei

IT-Consultant at ATIX AG

Neueste Artikel von Martin Grundei (alle ansehen)