VoidAccess
提出一個問題,VoidAccess 便平行搜尋 12+ 個 Tor 搜尋引擎、GitHub 與安全訂閱源,然後返回可供 STIX、MISP 或 Sigma 使用的行動者、錢包、外洩憑證和 IOCs。Open so
AI 翻譯
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Security alerts for your Mac, delivered to Telegram: remote access, persistence, tampering and posture changes, watched by a root daemon and Endpoint Security.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Security alerts for your Mac, delivered to Telegram.
English · Tiếng Việt
MacSentry watches a Mac for remote access, persistence, tampering and security posture changes, and sends each finding to Telegram as it happens, so the record leaves the machine before anyone can clean it up. It is built for people who look after their own Mac, or a few machines, and want to know when something changes without running a full EDR stack.
[!NOTE] The app is available in English and Vietnamese (it follows the system language, or pick one in Settings). Telegram alerts from the daemon are still in Vietnamese; help translating them is welcome (see Contributing).
sudoers, PAM, authorized_keys, shell rc files, with diffs of
what changed and secrets masked.curl | sh and
disabling SIP, Gatekeeper or the firewall./etc/macsentry.agents.kill -9 is reported, the log is append-only, and an optional heartbeat lets an outside service tell you
when the Mac goes quiet.See docs/detections.md for the full list.
| Events | Connection history |
|---|---|
| Trusted IPs | Settings |
Screenshots use sample data and documentation IP ranges.
flowchart LR
ES["macsentry-es<br/>(root, Endpoint Security<br/>via eslogger)"] -- spool --> D
D["macsentryd<br/>(root LaunchDaemon)"] --> LOG[("/var/log/macsentry.log<br/>append-only")]
D -- shared scan --> APP["MacSentry.app<br/>(menu bar, per user)"]
APP -. watches .-> D
D --> TG(["Telegram bot"])
APP --> TG
D -. heartbeat .-> HC(["Healthchecks-style<br/>monitor (optional)"])
| Component | Runs as | Role |
|---|---|---|
MacSentry.app | user (LaunchAgent, restarted if killed) | Remote access popups, screen lock/unlock, camera and microphone, sleep; history, trusted IPs, event viewer and settings. |
macsentryd | root (LaunchDaemon, from boot) | Most detections, the append-only log, Telegram delivery, the daily report and the heartbeat. |
macsentry-es | root (LaunchDaemon, needs Full Disk Access) | Reads Endpoint Security events through /usr/bin/eslogger and hands them to the daemon. It never holds the Telegram token. |
More detail is in docs/architecture.md.
MacSentry is built from source.
git clone https://github.com/vuminhhoa/macsentry.git
cd MacSentry
./build.sh # builds and installs ~/Applications/MacSentry.app, then starts it
daemon/install.sh --auto): macOS asks for an
administrator password once, no Terminal needed. If you cancel, click Install Now under
Monitoring Components./usr/local/libexec/macsentry-es and /usr/local/libexec/macsentryd:
System Settings → Privacy & Security → Full Disk Access → + → press ⌘⇧G
and paste the path. The daemon reminds you on Telegram until this is done.For a separate daemon bot (recommended, see Security model), a heartbeat URL, or to turn off
process execution monitoring, run sudo ./daemon/install.sh --reconfigure.
[!TIP] If you have an Apple Development certificate in your keychain,
build.shsigns with it, so macOS keeps Local Network and Full Disk Access permissions across rebuilds. Otherwise the binaries are signed ad hoc and the permissions must be granted again after each rebuild.
The app checks GitHub for a new release once a day and notifies you. Settings → Updates → Update Now runs
git pull and ./build.sh in the source folder, reinstalls the daemon (one password prompt), replaces the app and
restarts it. Your settings and /etc/macsentry.* are kept. To do it by hand:
git pull
./build.sh && sudo ./daemon/install.sh
./uninstall.sh # removes the daemon (asks for sudo) and the app; keeps your data and the log
./uninstall.sh --purge # also removes history, trusted IPs and the Telegram settings
The log at /var/log/macsentry.log is append-only by design. Remove it with
sudo chflags nosappnd /var/log/macsentry.log && sudo rm /var/log/macsentry.log.
| File | Purpose |
|---|---|
/etc/macsentry.conf | Daemon settings (root only): TOKEN, CHAT, HEARTBEAT_URL, ES_EXEC, FIM |
/etc/macsentry.trusted | Hosts a shell may connect to without a reverse shell alert |
/etc/macsentry.agents | Extra agents to watch, on top of the built-in catalog |
/etc/macsentry.allow | Regex allowlist for command alerts from the Endpoint Security helper |
~/Library/Application Support/MacSentry/ | App settings, connection history and trusted IPs (mode 0700) |
Every option is described in docs/configuration.md.
MacSentry is a tripwire, not a shield. It tells you quickly and from outside the machine that something changed; it does not block anything.
MacSentry has no server of its own and sends no analytics. Alerts go only to the Telegram chat you configure.
Alert text can include host names, user names, IP addresses, command lines and (masked) file diffs, so treat
the chat as sensitive. To describe remote peers, the daemon runs whois and reverse DNS for their IPs, which
sends those IPs to the relevant registries and resolvers. The heartbeat, if set, is a plain request to the URL
you choose.
Measured on a busy development Mac (IDE, builds, many processes):
| Component | CPU (one core) | Notes |
|---|---|---|
macsentryd | ~0.4-0.8% | Event driven; the earlier shell version used ~4.5% |
macsentry-es + eslogger | ~2% | Mostly exec events; set ES_EXEC=0 to turn them off |
MacSentry.app | ~0.2% | Reuses the daemon's scan; camera and microphone through listeners |
Both root jobs run with ProcessType=Background and LowPriorityIO, so macOS throttles them in favour of
your work. Alerts may arrive a few seconds late while the machine is busy.
./build.sh --no-install # build into build/ without touching the installed app
ARCHS="arm64 x86_64" ./build.sh --no-install # universal build, as CI does
Run the daemon without root and without sending anything:
DRYRUN=1 CONF=./test.conf LOG=./test.log STATE=./state PUB_DIR=./pub build/macsentryd
Replay recorded Endpoint Security events through the helper:
STATE=./state build/macsentry-es --replay < events.jsonl
Inspect what the daemon's readers see, without sending anything: sudo /usr/local/libexec/macsentryd --check.
The source layout and how to add a new check are described in docs/architecture.md.
Write-ups on how MacSentry is built and why, on vuminhhoa.com:
Bug reports, false positive reports, new detections and translations are welcome. Please read CONTRIBUTING.md first, and report vulnerabilities privately as described in SECURITY.md. This project follows the Contributor Covenant.
MIT © 2026 Vũ Minh Hoà