Cryptojacking, home-network intrusion, stalkerware, and identity theft recovery - #3
Open
lizTheDeveloper wants to merge 3 commits into
Open
Conversation
…rage Adds the detection and remediation content for a household whose Wi-Fi has been broken into, and for the cryptojacking that tends to arrive with it. New modules: - crypto_miner_persistence (macOS/Windows/Linux) finds what restarts a miner after it is killed: launch items, cron, systemd units, Run keys, scheduled tasks, shell profiles, and dropped miner configs. Wallet addresses and stratum arguments are treated as high-confidence evidence; a product name alone is not. - win_crypto_miner_detect gives Windows the live-miner detection that previously existed only for macOS: process command lines, established connections to mining-pool ports, and high CPU as a low-confidence lead. - browser_cryptojacking_check covers in-browser mining, which never shows up in a process list: extension code, startup pages, and hosts-file entries. Blackholed mining domains are recognised as protection, not as a threat. - lan_device_inventory lists the devices actually visible on the network, with OUI vendor labels, and says plainly that a quiet device can be missing. - arp_spoof_check looks for traffic interception: the gateway's address answering for other hosts, duplicate addresses, and multiple default routes. - router_security_audit checks the gateway's exposed admin surface and UPnP, and carries the full router reclaim procedure. - stalkerware_scan separates covert monitoring software from workplace and parental products and from dual-use remote access, and leads its guidance with safety planning rather than removal instructions. Supporting content: shared cryptojacking IOC data, a shared neighbour-table helper, expanded known-bloatware datasets (adware, scareware, bundled miners, OEM trials), and the home_network_intrusion profile and five-phase guide, ordered so the network is reclaimed before the devices are cleaned. rescue.runtime gains load_content_module() so modules can share a helper by path, which works in a source checkout, a pip install, and a frozen bundle. Every fix() here is guidance only, marked ActionKind.GUIDANCE, and every external command and filesystem scan is bounded by a timeout or a cap. Also fixes three pre-existing Python 3.12-only f-strings that made win_malware_indicators and win_bsod_analysis fail to load, and test_module_win_scheduled_tasks_security fail to collect, on the declared minimum Python 3.11. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AsDpjoDi59AXxhoy8TriUQ
Adds a six-phase guide that doubles as a recovery checklist — `rescue guide identity_theft_recovery` prints the outstanding steps and `--complete <n>` marks them off, so progress survives across the weeks this actually takes. The phases are ordered the way recovery works rather than the way it feels: 0. The first hour — start a recovery log, write down what is known, and deal with money that has already moved (reporting windows for unauthorised debit charges are short). 1. Confirm the device is not the leak — the only automatable phase, because changing passwords on a machine with a keylogger hands them straight back. Also covers email forwarding rules and carrier port-out locks, which both survive a password change. 2. Freeze — all three credit bureaus plus Innovis, NCTUE, and ChexSystems, which is where phone contracts and bank accounts get opened. 3. Report — IdentityTheft.gov first, because the FTC identity theft report is what unlocks the §605B block and the seven-year extended alert. Then police, IRS/state tax, SSA, CFPB, and the channels specific to SIM swap, medical, criminal, child, and deceased-relative identity theft. 4. Dispute — the distinction between a dispute (30 days, contestable) and an identity theft block (four business days, backed by the FTC report), plus the follow-up schedule for accounts that reappear via a new collector. 5. Monitor and rebuild — the long tail, and what recurrence looks like. The profile pairs the guide with the twelve existing modules that answer the one technical question here: is this device leaking credentials. It claims no automation for anything that happens at a bank or a government agency. US-first, with equivalents for the UK, Canada, Australia, and the EU in phase 2, and free case-managed support services named in phase 5. Also regenerates the integrity manifest for the runtime.py change in the previous commit, which was making every launch print a tamper warning. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AsDpjoDi59AXxhoy8TriUQ
Both guides had helplines scattered inline across steps, which is where they are least findable — somebody who needs a number six weeks from now is not going to re-read phase 3 step 4 to find it. Each guide now ends with a dedicated reference phase. identity_theft_recovery phase 6 covers free case-managed help (Identity Theft Resource Center, the AARP helpline, the DOJ elder fraud hotline, IDCARE, the Access Now digital security helpline), the official reporting channels, all six credit bureaus and databases that accept freezes, abuse-specific support including coerced debt, free legal aid, and non-US equivalents. home_network_intrusion phase 5 covers abuse support first — because when the intruder is someone known, the safety plan changes the order of the technical work — then free incident response, where to report an intrusion, a pointer to the identity theft guide when accounts are involved, and how to tell whether a router is worth keeping. Both open with the same warning: search results for support numbers are bought by scam call centres, and someone mid-recovery is exactly who they want. Type the domain, use the number on the card, and nothing legitimate is ever paid for in gift cards. That warning is worthless below the list, so it is step 1. stalkerware_scan's safety guidance gains the same country-by-country numbers, plus a note not to look them up from the monitored device — browsing history is one of the things that gets reported. A test asserts the scam-helpline warning stays first in the resources phase, and the step-title check caught one heading too vague to work as a checklist item. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AsDpjoDi59AXxhoy8TriUQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds detection and remediation for a household whose Wi-Fi has been broken into, the cryptojacking that tends to arrive with it, and the identity theft that follows.
What was missing
Existing coverage was
crypto_miner_detect(macOS only),wifi_security_audit(macOS only),mvt_spyware_scan(mobile backups),keylogger_indicators, and four small bloatware lists. The gaps:Seven new modules
lan_device_inventoryarp_spoof_checkrouter_security_auditcrypto_miner_persistencewin_crypto_miner_detectbrowser_cryptojacking_checkstalkerware_scanTwo new profiles and guides
home_network_intrusion— six phases, ordered network → devices → accounts, because a cleaned laptop rejoining a compromised network is compromised again.identity_theft_recovery— seven phases that double as a persistent checklist (rescue guide identity_theft_recovery, then--complete <n>). Ordered freeze → report → dispute: a dispute letter without an FTC identity theft report gets a form-letter reply; with one, §605B forces removal in four business days instead of a contestable 30-day investigation. US-first, with UK, Canada, Australia, and EU equivalents.Both guides end with a resources and tiplines phase: free case-managed help (Identity Theft Resource Center, AARP helpline, DOJ elder fraud hotline, IDCARE, Access Now), official reporting channels, all six credit bureaus and databases accepting freezes, abuse-specific support including coerced debt, free legal aid, and per-country equivalents. Each opens with the warning that support numbers in search results are bought by scam call centres — worthless below the list, so it is step 1, and a test keeps it there.
Design decisions worth reviewing
fix()is guidance only (ActionKind.GUIDANCE), nothing is auto-removed. On a possibly-compromised machine, deletion destroys evidence, and a half-removed miner is worse than an intact one. This follows the roadmap's P0 item 6 on not rendering guidance as a completed fix.stalkerware_scanleads with safety, not removal. If the person who installed it lives with the victim, cutting access tells them they have been found out. The first action is the abuse helplines, with a note not to look them up from the monitored device.barkeeper.app.0.0.0.0is somebody defending the machine.Supporting changes
rescue.runtime.load_content_module()so modules can share a helper by path — works in a source checkout, a pip install, and a frozen bundle alike, where a plainimportdoes not.process_scannernow treatscryptomineras a critical category.integrity_manifest.jsonfor theruntime.pychange, which was otherwise printing a tamper warning on every launch.Unrelated pre-existing fixes
Three Python 3.12-only f-strings made
win_malware_indicatorsandwin_bsod_analysisfail to load entirely on the declared minimum Python 3.11, andtest_module_win_scheduled_tasks_securityfail to collect. Fixed, since one of them is a malware module directly relevant here. Happy to split these into their own PR.Testing
86 new tests. Full suite: 3139 passed, 61 failed — all 61 verified to fail identically on a clean worktree of the base branch (macOS-specific tests running on Linux as root, a missing GPG key).
test_module_ai_threat_indicatorsstill hangs, asdocs/ROADMAP.mdalready records.Known gaps
wifi_security_auditis still macOS-only, so there is no Wi-Fi encryption or WPS check for Windows or Linux.