YARA · Synacktiv rules
SYNACKTIV_SYNACKTIV_WEBSHELL_ASPX_Suo5_May25
Detects the .NET version of the suo5 webshell
- Autor
- Synacktiv, Maxence Fossat [@cybiosity]
- Datum
- 2025-05-12
- Score / Qualität
- 75 / 80
Was diese Regel erkennt
Detects the .NET version of the suo5 webshell
Sie definiert 18 Muster (17 Text, 0 Hex, 1 Regex).
Zusammenfassung aus den Metadaten und der Bedingung der Regel erzeugt.
Regelquelltext
rule SYNACKTIV_SYNACKTIV_WEBSHELL_ASPX_Suo5_May25 : WEBSHELL COMMODITY FILE
{
meta:
= "Detects the .NET version of the suo5 webshell"
= "Synacktiv, Maxence Fossat [@cybiosity]"
= "d30a7232-f00b-45ab-9419-f43b1611445a"
= "2025-05-12"
= "2025-05-12"
= "https://www.synacktiv.com/en/publications/open-source-toolset-of-an-ivanti-csa-attacker"
= "https://github.com/synacktiv/synacktiv-rules/blob/d234cc4da0783db7dca56ae8dd5252afdc248df8/2025/offensive_tools/webshell_aspx_suo5.yar#L1-L46"
= "https://github.com/synacktiv/synacktiv-rules/blob/d234cc4da0783db7dca56ae8dd5252afdc248df8/LICENSE.md"
= "06710575d20cacd123f83eb82994879367e07f267e821873bf93f4db6312a97b"
= "e6979d7df0876679fc2481aa68fcec5b6ddc82d854f63da2bddb674064384f9a"
= "3bbbef1b4ead98c61fba60dd6291fe1ff08f5eac54d820e47c38d348e4a7b1ec"
= "345c383dd439eb523b01e1087a0866e13f04ff53bb8cc11f3c70b4a382f10c7e"
= "838840dd76ff34cee45996fdc9a87856c9a0f14138e65cb9eb6603ed157d1515"
= "d9657ac8dd562bdd39e8fcc1fff37ddced10f7f3f118d9cd4da6118a223dcc45"
= "68dc29b2cedc26e638eaa12bf2a2d0415de323097baf5ea61dba52bd20b5beee"
= 75
= 80
= "WEBSHELL, COMMODITY, FILE"
= "DRL-1.1"
= "TLP:CLEAR"
= "PAP:CLEAR"
strings:
$user_agent = ".Equals(\"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.1.2.3\")" ascii
$header = "Response.AddHeader(\"X-Accel-Buffering\", \"no\")" ascii
$xor = /= \(byte\)\(\w{1,1023}\[\w{1,1023}\] \^ \w{1,1023}\);/
$s1 = "Request.Headers.Get(\"User-Agent\")" ascii
$s2 = "if (Request.ContentType.Equals(\"application/plain\"))" ascii
$s3 = "Response.ContentType = \"application/octet-stream\";" ascii
$s4 = "= Request.BinaryRead(Request.ContentLength);" ascii
$s5 = "= Response.OutputStream;" ascii
$s6 = "new TcpClient()" ascii
$s7 = ".BeginConnect(" ascii
$s8 = ".GetStream().Write(" ascii
$s9 = "new BinaryWriter(" ascii
$s10 = "new BinaryReader(" ascii
$s11 = ".ReadBytes(4)" ascii
$s12 = "BitConverter.GetBytes((Int32)" ascii
$s13 = "BitConverter.ToInt32(" ascii
$s14 = "Array.Reverse(" ascii
$s15 = "new Random().NextBytes(" ascii
condition:
filesize < 100KB and ( $user_agent or ( ( $header or $xor ) and 8 of ( $s* ) ) or 12 of ( $s* ) )
}
Strings (18 Muster)
| Bezeichner | Typ | Wert | Modifikatoren |
|---|---|---|---|
| $user_agent | Text | ".Equals(\"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.1.2.3\")" | ascii |
| $header | Text | "Response.AddHeader(\"X-Accel-Buffering\", \"no\")" | ascii |
| $xor | Regex | /= \(byte\)\(\w{1,1023}\[\w{1,1023}\] \^ \w{1,1023}\);/ | |
| $s1 | Text | "Request.Headers.Get(\"User-Agent\")" | ascii |
| $s2 | Text | "if (Request.ContentType.Equals(\"application/plain\"))" | ascii |
| $s3 | Text | "Response.ContentType = \"application/octet-stream\";" | ascii |
| $s4 | Text | "= Request.BinaryRead(Request.ContentLength);" | ascii |
| $s5 | Text | "= Response.OutputStream;" | ascii |
| $s6 | Text | "new TcpClient()" | ascii |
| $s7 | Text | ".BeginConnect(" | ascii |
| $s8 | Text | ".GetStream().Write(" | ascii |
| $s9 | Text | "new BinaryWriter(" | ascii |
| $s10 | Text | "new BinaryReader(" | ascii |
| $s11 | Text | ".ReadBytes(4)" | ascii |
| $s12 | Text | "BitConverter.GetBytes((Int32)" | ascii |
| $s13 | Text | "BitConverter.ToInt32(" | ascii |
| $s14 | Text | "Array.Reverse(" | ascii |
| $s15 | Text | "new Random().NextBytes(" | ascii |
Bedingung
filesize < 100KB and ( $user_agent or ( ( $header or $xor ) and 8 of ( $s* ) ) or 12 of ( $s* ) )In Worten (Heuristik)
- Die Datei muss kleiner als 100KB sein (eine günstige Grenze, die große Dateien ausschließt).
- Mindestens 8 Muster aus ( $s* ) müssen treffen.
- Mindestens 12 Muster aus ( $s* ) müssen treffen.
- Muster $user_agent muss vorhanden sein.
- Muster $header muss vorhanden sein.
- Muster $xor muss vorhanden sein.
Diese Regel im Browser testen
Legen Sie eine Datei ab, um sie mit dieser Regel und YARA-X als WebAssembly zu scannen. Nichts wird hochgeladen.
Proben-Hashes
Hashes der Proben, die der Autor in den Metadaten der Regel nennt (in Ihrer Threat-Intelligence-Plattform nachschlagen).
- 06710575d20cacd123f83eb82994879367e07f267e821873bf93f4db6312a97b
- e6979d7df0876679fc2481aa68fcec5b6ddc82d854f63da2bddb674064384f9a
- 3bbbef1b4ead98c61fba60dd6291fe1ff08f5eac54d820e47c38d348e4a7b1ec
- 345c383dd439eb523b01e1087a0866e13f04ff53bb8cc11f3c70b4a382f10c7e
- 838840dd76ff34cee45996fdc9a87856c9a0f14138e65cb9eb6603ed157d1515
- d9657ac8dd562bdd39e8fcc1fff37ddced10f7f3f118d9cd4da6118a223dcc45
Lizenz & Namensnennung
Autor: Synacktiv, Maxence Fossat [@cybiosity]
Quell-Repository: Synacktiv rules @ d234cc4da0
Lizenz: Detection Rule License 1.1 (in den Metadaten der Regel angegeben)
“DRL-1.1”
Gespiegelt über YARA Forge 20260927, das Regelnamen mit der Quelle präfixiert und normalisierte Meta-Felder ergänzt.
Regel-ID: d30a7232-f00b-45ab-9419-f43b1611445a
Metadaten
| tlp | TLP:CLEAR |
|---|---|
| pap | PAP:CLEAR |
Verwandte Regeln
- HacktoolSynacktiv rules· Synacktiv, Maxence Fossat [@cybiosity]· 2025-05-12
- HacktoolSynacktiv rules· Synacktiv, Maxence Fossat [@cybiosity]· 2025-05-12