Skip to content

YARA · SEKOIA.IO Community

SEKOIA_Implant_Lin_Geacon

Finds Geacon samples based on specific strings

MalwareSEKOIA.IO CommunityDetection Rule License 1.1Compiles with YARA-X
Author
Sekoia.io
Date
2024-01-11
Modified
2024-12-19
Score / Quality
75 / 80

What this rule detects

Finds Geacon samples based on specific strings

Targets: Linux ELF.

It defines 18 patterns (18 text, 0 hex, 0 regex).

Summary generated from the rule's metadata and condition.

Rule source

implant-lin-geacon.yarDetection Rule License 1.1
rule SEKOIA_Implant_Lin_Geacon : FILE
{
	meta:
		description = "Finds Geacon samples based on specific strings"
		author = "Sekoia.io"
		id = "ad71522e-270b-47d0-9c01-081f05a2b72a"
		date = "2024-01-11"
		modified = "2024-12-19"
		reference = "https://www.sentinelone.com/blog/geacon-brings-cobalt-strike-capabilities-to-macos-threat-actors/"
		source_url = "https://github.com/SEKOIA-IO/Community/blob/a438a5901a211c2abdf75da9c93921ef187473d1/yara_rules/implant_lin_geacon.yar#L1-L35"
		license_url = "https://github.com/SEKOIA-IO/Community/blob/a438a5901a211c2abdf75da9c93921ef187473d1/LICENSE.md"
		logic_hash = "c6fa5815bf618eb588d511f18231042944dee20c1b13096c44910d43ca552bfa"
		score = 75
		quality = 80
		tags = "FILE"
		version = "1.0"
		classification = "TLP:CLEAR"

	strings:
		$gea01 = "geacon/config.init" ascii
		$gea02 = "geacon_pro-master/config/config.go" ascii
		$gea03 = "geacon_plus-main/config/config.go" ascii
		$gea04 = "command type %d is not support by geacon now" ascii
		$gea05 = "main/sysinfo.GeaconID" ascii
		$str01 = "command.StealToken" ascii
		$str02 = "command.MakeToken" ascii
		$str03 = "command/misc.go" ascii
		$str04 = "config/c2profile.go" ascii
		$str05 = "crypt.AesCBCDecrypt" ascii
		$str06 = "packet.File_Browse" ascii
		$str07 = "packet.FirstBlood" ascii
		$str08 = "packet.ParseCommandShell" ascii
		$str09 = "packet.ParseCommandUpload" ascii
		$str10 = "packet.PushResult" ascii
		$str11 = "sysinfo.GetComputerName" ascii
		$str12 = "sysinfo.IsOSX64" ascii
		$str13 = "util..inittask" ascii

	condition:
		uint32( 0 ) == 0x464C457F and ( ( 1 of ( $gea* ) and 2 of ( $str* ) ) or 8 of ( $str* ) )
}

Strings (18 patterns)

IdentifierTypeValueModifiers
$gea01text"geacon/config.init"ascii
$gea02text"geacon_pro-master/config/config.go"ascii
$gea03text"geacon_plus-main/config/config.go"ascii
$gea04text"command type %d is not support by geacon now"ascii
$gea05text"main/sysinfo.GeaconID"ascii
$str01text"command.StealToken"ascii
$str02text"command.MakeToken"ascii
$str03text"command/misc.go"ascii
$str04text"config/c2profile.go"ascii
$str05text"crypt.AesCBCDecrypt"ascii
$str06text"packet.File_Browse"ascii
$str07text"packet.FirstBlood"ascii
$str08text"packet.ParseCommandShell"ascii
$str09text"packet.ParseCommandUpload"ascii
$str10text"packet.PushResult"ascii
$str11text"sysinfo.GetComputerName"ascii
$str12text"sysinfo.IsOSX64"ascii
$str13text"util..inittask"ascii

Condition

uint32( 0 ) == 0x464C457F and ( ( 1 of ( $gea* ) and 2 of ( $str* ) ) or 8 of ( $str* ) )

In plain words (Heuristic)

  • The file must start with the ELF header — a Linux/Unix executable.
  • At least 1 patterns in ( $gea* ) must match.
  • At least 2 patterns in ( $str* ) must match.
  • At least 8 patterns in ( $str* ) must match.

Test this rule in your browser

Drop a file to scan it with this rule using YARA-X compiled to WebAssembly. Nothing is uploaded.

Drop a file here or click to chooseScanned locally with YARA-X. Files up to 200 MB.

Open in editor

References

Licence & attribution

Author: Sekoia.io

Source repository: SEKOIA.IO Community @ a438a5901a

Licence: Detection Rule License 1.1 (repository licence)

Original rule

Mirrored via YARA Forge 20260927, which prefixes rule names with the source and adds normalised meta fields.

Rule id: ad71522e-270b-47d0-9c01-081f05a2b72a

Metadata

version1.0
classificationTLP:CLEAR

Tags:FILE