User Guide
Synapse-Cybera User Guide
Synapse-Cybera adds Storm commands to ingest money-mule bank account intelligence and per-account evidence packages from the CYBERA API using your existing API key.
Getting Started
Check with your Admin to enable permissions and find out if you need a personal API key.
A user with their own key adds it as a self-scoped configuration:
cybera.config.add my_config myapikey --scope self
Every command takes an optional --config to pick a configuration by name.
Without one you get your own if you have added it, and the global one if you
have not.
Ingesting the mule account feed
cybera.intel.feed ingests the CYBERA Premium FIAT feed. Each record becomes
an econ:bank:account for the mule account, a risk:attack for the report,
and a risk:threat for the operator behind it.
> econ:bank:account:iban=AE920340003708510314301 | tee --join { :issuer -> ou:org } { :contact -> ps:contact } { <(uses)- risk:attack }
ou:org=aa39f782057b1354ce1d3ec8d1de1d05
.created = 2026/09/04 19:08:10.208
:country:code = ae
:name = emirates islamic bank
ps:contact=e3cc908e0a21d1b6d1ab8bb09b174dc4
.created = 2026/09/04 19:08:10.213
:id = bkac_ciarppjokqh6zdz4
:loc = ae
:name = renanao theophilus seleko
:type = cybera.holder
risk:attack=a3a246b4779c0fe0ba68887bd3e2237f
.created = 2026/09/04 19:08:10.203
:actor = ('risk:threat', 'a3a246b4779c0fe0ba68887bd3e2237f')
:detected = 2026/08/04 00:00:00.000
:ext:id = bkac_ciarppjokqh6zdz4
:reporter = 45c6b4565ce30290fa7b4e36fa347617
:reporter:name = cybera
:type = cybera.advancefeefraud
econ:bank:account=80f398ff17c60a65e249722076aa2561
.created = 2026/09/04 19:08:10.214
:contact = e3cc908e0a21d1b6d1ab8bb09b174dc4
:iban = AE920340003708510314301
:issuer = aa39f782057b1354ce1d3ec8d1de1d05
:issuer:name = emirates islamic bank
:swift:bic = MEBLAEAD
#rep.cybera.advancefeefraud
The contact is the holder the criminal supplied, which makes it the money mule
rather than the person running the scam. The organization is the bank that
issued the account, named again by the routing identifiers on :aba:rtn and
:swift:bic.
Re-running the command updates the existing nodes rather than creating
duplicates. Every report an operator is behind shares one risk:threat, so a
walk from there covers all of them.
Use --since-last for incremental pulls. The command records the newest
dateRecorded it has seen and resumes from there:
cron.add --name cybera.intel.feed --period daily@02:00 { cybera.intel.feed --since-last }
The checkpoint is written once the pull completes, so --size cannot be
combined with it. Date filters apply to dateRecorded, the date CYBERA first
ingested the record, not to when the scam activity was observed:
cybera.intel.feed --start-date 2026-05-01 --end-date 2026-05-31
Evidence
An evidence package holds the scam-bait correspondence, the entities the scammer referenced with the context each was used in, and the other mule accounts provided during the same engagement.
cybera.intel.feed pulls one for every record by default, which costs a
request per record. Use --no-evidence for a large or exploratory pull:
cybera.intel.feed --no-evidence
cybera.intel.evidence pulls or refreshes a single report:
It also takes inbound risk:attack nodes, which is where the CYBERA id
lives:
econ:bank:account:number=40630262974066296 <(uses)- risk:attack | cybera.intel.evidence
An account with no evidence package is reported and skipped rather than failing the batch.
CYBERA mints an id per report rather than per scammer, so the same operator
turns up under several. The package names them, and they collapse onto one
risk:threat:
> risk:attack:ext:id=bkac_v1h04og3gwwbs9u1 :actor -> risk:threat -> risk:attack
risk:attack=38a6d31b04596734e0f450899dc24b5d
.created = 2026/09/04 19:08:10.375
:actor = ('risk:threat', '38a6d31b04596734e0f450899dc24b5d')
:ext:id = bkac_v1h04og3gwwbs9u1
:reporter = 45c6b4565ce30290fa7b4e36fa347617
:reporter:name = cybera
:type = cybera.governmentimpersonationscam
risk:attack=cfd663667ff7b744d775403965adcacb
.created = 2026/09/04 19:08:10.389
:actor = ('risk:threat', '38a6d31b04596734e0f450899dc24b5d')
:ext:id = bkac_285667qzhaumt89q
:reporter = 45c6b4565ce30290fa7b4e36fa347617
:reporter:name = cybera
risk:attack=38fdb6d177793845d3bcfd0572385e48
.created = 2026/09/04 19:08:10.398
:actor = ('risk:threat', '38a6d31b04596734e0f450899dc24b5d')
:ext:id = bkac_y58klju1npfiwpg9
:reporter = 45c6b4565ce30290fa7b4e36fa347617
:reporter:name = cybera
The other two exist as risk:attack nodes now, so when the feed reaches them
it fills in their bank details rather than creating anything new.
A name CYBERA types as a government or a company becomes an ou:name; an
untyped one becomes a ps:name. Neither claims the organization or the person
was involved – a scammer signing as the Australian Government has used the
name, not the agency.
Attached files are downloaded into the Axon and parsed with Synapse-FileParser
when that optional Power-Up is available. The raw .eml of each message lands
on :bytes, anything else on inet:email:message:attachment:
> inet:email:message:bytes -> file:bytes
file:bytes=sha256:87ee18ece0db294b2fbac85ff48ef52e63ec6ab680f13297c7ddb5d4e176b6ab
.created = 2026/09/04 19:08:10.455
:md5 = a2ab8192b4b6109a0d0bf9619b8942bd
:mime = message/rfc822
:sha1 = 9d845c008658708cecc182dd7a107c389271d6fe
:sha256 = 87ee18ece0db294b2fbac85ff48ef52e63ec6ab680f13297c7ddb5d4e176b6ab
:sha512 = 96c38d2131e16b069508c77f6d2910022d93b79cd8828bb090352ae3a753f38cfe481384d52b1fab4123f3c2dd7702c58c4fa2cfb04b3c06d48117f5769a194c
:size = 111821
Pivoting from an ingested account
The operator behind a report, and the addresses they used:
> risk:attack:ext:id=bkac_v1h04og3gwwbs9u1 :actor -> risk:threat -(uses)> inet:email
inet:email=communitygrantshub.dss.au@gmail.com
.created = 2026/09/04 19:08:10.446
:fqdn = gmail.com
:user = communitygrantshub.dss.au
The routing identifiers that address an account:
> econ:bank:account:iban=AE920340003708510314301 :swift:bic -> econ:bank:swift:bic
econ:bank:swift:bic=MEBLAEAD
.created = 2026/09/04 19:08:10.210
:business = aa39f782057b1354ce1d3ec8d1de1d05
Every account CYBERA classified as an advance fee fraud:
> econ:bank:account#rep.cybera.advancefeefraud
econ:bank:account=68b12b00c87f15dad0c4c3a8898a958d
.created = 2026/09/04 19:08:10.254
:contact = 58c6b141a3feee17662263ea5a783642
:iban = DK2966952001716827
:issuer = b91bb611c8c9a6f200fde0d5d04d0232
:issuer:name = lunar bank a/s
:swift:bic = LUNADK22
#rep.cybera.advancefeefraud
econ:bank:account=80f398ff17c60a65e249722076aa2561
.created = 2026/09/04 19:08:10.214
:contact = e3cc908e0a21d1b6d1ab8bb09b174dc4
:iban = AE920340003708510314301
:issuer = aa39f782057b1354ce1d3ec8d1de1d05
:issuer:name = emirates islamic bank
:swift:bic = MEBLAEAD
#rep.cybera.advancefeefraud
Who the scam-bait correspondence for a report came from:
> risk:attack:ext:id=bkac_v1h04og3gwwbs9u1 -(uses)> inet:email:message :from -> inet:email
inet:email=communitygrantshub.dss.au@gmail.com
.created = 2026/09/04 19:08:10.446
:fqdn = gmail.com
:user = communitygrantshub.dss.au
A name the scammer claimed, and the analyst note on how they used it:
> ou:name='australian government' <(about)- meta:note
meta:note=d18705e8871ebfe43ecf265905a53e86
.created = 2026/09/04 19:08:10.498
:text = Appears in branding 'Community Grants Hub - Australian Government' implying official government affiliation.
Which report a claimed affiliation came from:
> ou:name='australian government' <(uses)- risk:attack
risk:attack=38a6d31b04596734e0f450899dc24b5d
.created = 2026/09/04 19:08:10.375
:actor = ('risk:threat', '38a6d31b04596734e0f450899dc24b5d')
:ext:id = bkac_v1h04og3gwwbs9u1
:reporter = 45c6b4565ce30290fa7b4e36fa347617
:reporter:name = cybera
:type = cybera.governmentimpersonationscam
Every name that operator claimed, across all of their reports:
> risk:attack:ext:id=bkac_v1h04og3gwwbs9u1 :actor -> risk:threat -(uses)> ps:name
ps:name=ahmad afriliyanto
.created = 2026/09/04 19:08:10.475
ps:name=daniel lopori
.created = 2026/09/04 19:08:10.470
ps:name=grace holloway
.created = 2026/09/04 19:08:10.465
ps:name=yusuf abiodun afolabi
.created = 2026/09/04 19:08:10.480
ps:name=community grants hub
.created = 2026/09/04 19:08:10.460
Use of meta:source nodes
Synapse-Cybera uses a meta:source node and -(seen)> light weight edges
to track nodes observed from the Cybera API.
> meta:source=3c5b9fe6e27488024c3ef09eaa317648
meta:source=3c5b9fe6e27488024c3ef09eaa317648
.created = 2026/09/04 19:08:10.064
:name = cybera api
:type = synapse.cybera
Storm can be used to filter nodes to include/exclude nodes which have been observed by Synapse-Cybera. The following example shows how to filter the results of a query to include only results observed by Synapse-Cybera:
> econ:bank:account +{ <(seen)- meta:source=3c5b9fe6e27488024c3ef09eaa317648 }
econ:bank:account=38a6bf28716ac826c22ae0c275330cbb
.created = 2026/09/04 19:08:10.160
:contact = 758da76659a50fec77fe3ce1a22c6993
:iban = LU314080000047903020
:issuer = b3423eaef462ab5646179e60df07efc9
:issuer:name = banking circle
:swift:bic = BCIRLULL
#rep.cybera.investmentscam
econ:bank:account=3c1921a7fdb39b48ec44a279023e9539
.created = 2026/09/04 19:08:10.103
:contact = 49f4185001451dc849e1b2340e6d40f8
:issuer = 7a3b4aaaffffee6fe5fd67e32f44d91f
:issuer:name = cibc
:number = 6060439
#rep.cybera.inheritancescam
econ:bank:account=448b585320ce69501cd629fb72238540
.created = 2026/09/04 19:08:10.290
:contact = fc98c84bad67f8d688cb4cb36d3ef6b3
:issuer = 3b4a34d2d72468971d425ff8606bc33d
:issuer:name = bank of montreal (bmo)
:number = 3876834
#rep.cybera.lotteryscam
econ:bank:account=68b12b00c87f15dad0c4c3a8898a958d
.created = 2026/09/04 19:08:10.254
:contact = 58c6b141a3feee17662263ea5a783642
:iban = DK2966952001716827
:issuer = b91bb611c8c9a6f200fde0d5d04d0232
:issuer:name = lunar bank a/s
:swift:bic = LUNADK22
#rep.cybera.advancefeefraud
econ:bank:account=80f398ff17c60a65e249722076aa2561
.created = 2026/09/04 19:08:10.214
:contact = e3cc908e0a21d1b6d1ab8bb09b174dc4
:iban = AE920340003708510314301
:issuer = aa39f782057b1354ce1d3ec8d1de1d05
:issuer:name = emirates islamic bank
:swift:bic = MEBLAEAD
#rep.cybera.advancefeefraud