Tools · Forensics tools · 20 / 25
CyberChef: pull URLs and strings out of a blob you already have
Extract URLs and Strings are scanners for a buffer you already collected. They make a list of leads. Each lead still has to be found in a real exhibit before it is a finding.
Strings are a view, not a decode
The Strings operation walks a buffer and pulls out runs of printable characters. It is how you survey a binary extract or a memory dump of a small region without pretending the whole file is text. You will see paths, error messages, and coincidences. A path that matches the case, such as p4.xlsx, is a lead back to bytes you can quote with an offset. A word that is common English is not a lead just because it appeared.
Set a minimum length high enough to skip noise and low enough to keep the staged filename. Four is too low for a large dump. Eight or more is a reasonable start for a survey, and you can drop it if a known short token is missing. Record the length you used in the recipe. Two string lists from the same file with different lengths are different exhibits.
Extract URLs, then compare them to the case
Extract URLs hunts for URL-shaped text. Run it on the decoded command, the config, and any script-sized extract. Compare the list to names you already have: drop.lab.example, the address 203.0.113.44, and the ordinary Microsoft and vendor hosts a Windows laptop contains. The first group is relevant. The second group is background. A new hostname is a lead, and it goes into the note as “present in this file,” not as “contacted.” Contact is a Sysmon Event ID 3 or a netscan row. Presence in a binary can be a leftover string from a library.
Defang the copies you paste into email and tickets so a reader’s client does not make them links. The evidence file keeps the original characters. You are changing the working copy you show people, and you say you defanged the prose. The recipe that extracted the URL stays on the original bytes.
- Relevant: names and addresses already in the case, found again.
- Background: vendor and platform hosts you expect on this OS.
- New: anything else, labeled as a string inside a named file, not as a connection.
A regular expression is a third extractor
When Extract URLs is too broad or too narrow, a regular expression can pull a pattern you can say out loud, such as a line that contains the workbook name. Keep the expression simple. A huge expression copied from a threat-intel page will match half the CSV and teach you nothing about this case. Test it on the must-hit command line and on powershell.exe the way you tested YARA. An extractor that cannot pass that pair does not get to define the finding.
Save the matched substrings as their own output file. The report can quote one or two. The rest stay in the file for search. Pasting four hundred strings into the narrative hides the pair of paths that matter.
Extraction is the last CyberChef step for this case
You now have a small set of recipes: Base64 to the copy command, FILETIME to UTC, XOR with the config key, and a string extract on any dump you kept. Each one has input, recipe, output, and a check. That is the CyberChef appendix. It does not replace Autopsy, Volatility, or Sysmon. It makes individual fields readable so those tools’ sentences stay checkable.
If a new blob arrives, you start again from the source and the encoding the artifact names. You do not replay every recipe against it hoping one fits. The log can say “no encoding identified, left as hex, hash attached.” Unread bytes are allowed. Invented plaintext is not.
Worked case: the host string shows up twice
Strings on the XOR output and Extract URLs on the decoded command line both surface drop.lab.example. The command line’s copy statement does not contain a URL, so Extract URLs there is empty, and you record the empty output. The JSON host field is the hit. You defang the name in the email to counsel and leave it intact in the output file.
A Strings pass on the stock powershell.exe produces a long vendor list. You do not paste it into the report. You note that the survey used a minimum length of 8 and that the case hostname was absent, which matches the NSRL result: this is the ordinary binary. The appendix is complete.
Diagram
From a buffer to a short lead list
- Survey
Run Strings with a recorded minimum length, or Extract URLs, on one named extract.
- Compare
Split the results into case names, expected vendor noise, and new strings.
- Promote
A case name found again is corroboration of text. A connection still has to come from a network artifact.
- File
Keep the full list in the output file. Quote the one or two strings the report actually uses.
drop.lab.example — case name, present in the JSON output vendor hosts in powershell.exe — background, length 8 survey contact? — only if Sysmon or netscan has the same peer
Check yourself
1. Extract URLs on a library from System32 lists dozens of vendor sites and also drop.lab.example. What may you say about drop.lab.example?