SMB relay

0x00 SMB服务

先来了解一下什么是 SMB 服务,SMB(Server Message Block)是一个协议名称,用它可以共享计算机之间的文件、打印机、串口等,通过 SMB 也可以远程访问服务器端的文件、打印机等共享资源。

SMB协议可以为局域网用户提供相关的功能和机制,来保证传输的可靠性。局域网中90%的数据包以及95%的字节是通过SMB协议进行传输,这是为了解决网络的稳定性和数据流在共享带宽时的公平性、拥塞控制及效率等问题。
————来源百度百科

总之 SMB 服务可以为局域网用户提供相关功能和机制,来保证传输可靠性。

一路走来 SMB 有三代,从 SMBv1 到 SMBv2 再到现在的 SMBv3 ,实际上越来越安全了。 (CVE-2020-0796针对的是SMB3.1.1)

0x01 NTLM hash

然后简单介绍一下 NTLM hash,我们知道 Windows 下的密码被加密保存在 SAM (Security Accout Manager)文件中,域控在 NTDS.dit,不可进行修改或是移动;NTLM hash 就是里面保存用户密码的 hash

生成方法分为三步:

1.将明文口令转为十六进制
2.转换成 Unicode 格式
3.进行 MD4 加密

得到了最后的32为十六进制数字串

0x001 LM hash 和 NTLM hash

可以看作 NTLM hash 是 LM hash 的升级,但是他们是两种不同的加密方式,LM hash 的安全性较差,易被破解,现在很少在使用了,故关于 LM hash 在此不多赘述。

0x002 NTLMv1 hash 和 NTLMv2 hash

NTLM hash 分为 NTLMv1 NTLMv2 NTLM session v2 三种,从 Windows Vista 和 Server 2008 开始,系统是默认禁用 NTLMv1 的,而是用的是 NTLMv2,NTLMv1 相对 NTLMv2 更脆弱,因为服务端的挑战码是 8 位的,而 NTLMv2 协议的挑战码是 16 位的,稍后会讲到。

0x003 NTLM hash 和 Net-NTLM hash

Net-NTLM hash 即指的是网络环境下 NTLM 认证的 hash,故也分为 Net-NTLMv1 hash, Net-NTLMv2 hash

0x004 Net-NTLM(v2) 认证流程

1.客户端向服务器发送登录请求,密码在客户端被 hash 一次
2.客户端向服务器发送 username
3.服务器返回一个 16 字节的挑战码(Challenge),并将已存储的用户密码 hash 加密这个 Challenge,生成 Challenge1
4.客户端将第一步 hash 的密码与 Challenge 再进行 hash 一次,生成 response 即 Challenge2
5.客户端将 response 发送给服务器
6.服务器比较 Challenge1 和 response,相同则认证成功

0x02 SMB中继攻击(SMB relay attack)原理

了解了 Net-NTLM 认证流程,再来分析 SMB 中继攻击原理就明了多了,攻击者充当了一个第三人,截获流量,重放流量

0x03 漏洞环境

kali          192.168.37.134        攻击机
win7 192.168.37.128 受害机器
win2008 192.168.37.131 第三方机器

1. smbrelay.py

大概流程就是:首先我们使用impacket工具包中的smbrelay.py,-h 指定受害机器,然后再第三方机器上net use 我们的kali机器ip ,net use的账户密码 得是可以登录win7的密码,就可以执行我们的木马

其中win10好像不得行

可以看到win2008上线了

可以看到能执行我们的CS马,然后脚本会删除这个木马。

2 MultiRelayx.py拿下shell

因为下班了这儿就重新记录下IP

win2008         192.168.127.149
win2012(DC)    192.168.127.148
kali 192.168.127.128

  

先用responder工具包里面的RunFinger.py脚本进行扫描(nmap皆可)来查看域内机器SMB签名的开放情况

如果MultiRelay脚本运行出错的话,就安装一下下面这个库

apt-get install python-crypto

现在 SMB 已经由 MultiRelay.py 脚本来进行中继,我们需要修改一下 Responder.conf 脚 本,不让其对 hash 进行抓取

在域控上随意net use 一下都可以

成功拿到shell.

SMB relay的更多相关文章

  1. 渗透杂记-2013-07-13 关于SMB版本的扫描

    smb2的溢出,其实在metasploit里面有两个扫描器可以用,效果都差不多,只是一个判断的更加详细,一个只是粗略的判断. Welcome to the Metasploit Web Console ...

  2. metasploit--exploit模块信息

    Name                                             Disclosure Date  Rank    Description ----           ...

  3. Metasploit辅助模块

    msf > show auxiliary Auxiliary ========= Name                                                  Di ...

  4. [转载] MySQL 注入攻击与防御

    MySQL 注入攻击与防御 2017-04-21 16:19:3454921次阅读0     作者:rootclay 预估稿费:500RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页 ...

  5. Kali linux 2016.2(Rolling)中的Exploits模块详解

    简单来将,这个Exploits模块,就是针对不同的已知漏洞的利用程序. root@kali:~# msfconsole Unable to handle kernel NULL pointer der ...

  6. HW弹药库之红队作战手册

    红方人员实战手册 声明 Author : By klion Date : 2020.2.15 寄语 : 愿 2020 后面的每一天都能一切安好 分享初衷 一来, 旨在为 "攻击" ...

  7. ATT&CK 实战 - 红日安全 vulnstack (二) 环境部署(劝退水文)

    靶机下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ 靶场简述 红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习.视频教程.博 ...

  8. Lateral Movement

    简介 这次去宁夏护网,发现我有的朋友连最基本的横向渗透有些都不晓得,他们问我 我也表达不清楚...,就想着写篇文章总结下吧 (慢慢更..) 可以发我邮箱讨论:muxue@protonmail.com ...

  9. smb.conf - Samba组件的配置文件

    总览 SYNOPSIS smb.conf是Samba组件的配置文件,包含Samba程序运行时的配置信息.smb.conf被设计成可由swat (8)程序来配置和管理.本文件包含了关于smb.conf的 ...

随机推荐

  1. JAVA中@Override的含义

    @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...

  2. 【原创】Linux虚拟化KVM-Qemu分析(八)之virtio初探

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  3. uni-app开发经验分享十: 封装request请求

    http.js //封装requset,uploadFile和downloadFile请求,新增get和post请求方法 let http = { 'setBaseUrl': (url) => ...

  4. Linux系统设置 SSH 通过密钥登录

    我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者 ...

  5. LiteOS调测利器:backtrace函数原理知多少

    摘要:本文将会和读者分享LiteOS 5.0版本中Cortex-M架构的backtrace软件原理及实现,供大家参考和学习交流. 原理介绍 汇编指令的执行流程 图 1 汇编指令的执行顺序 上图1所示, ...

  6. 基于final shell的linux命令

    final shell操作教程: 1.查看API实时日志:cd ../../data/log/api tail -100f anyAPI-server.log2.关闭日志:control+c3.恢复实 ...

  7. 类型检查和鸭子类型 Duck typing in computer programming is an application of the duck test 鸭子测试 鸭子类型 指示编译器将类的类型检查安排在运行时而不是编译时 type checking can be specified to occur at run time rather than compile time.

    Go所提供的面向对象功能十分简洁,但却兼具了类型检查和鸭子类型两者的有点,这是何等优秀的设计啊! Duck typing in computer programming is an applicati ...

  8. 扩展欧几里得(exgcd)及其应用

    定义 扩展欧几里得算法是用来在已知一组 \((a,b)\) 的时,求解一组 \((x,y)\) 使得 \[ax+by=gcd(a,b) \] 思想 and 板子 根据相关的知识可以得到 \[gcd(a ...

  9. 写给小白的 Nginx 文章

    原文地址:Nginx concepts I wish I knew years ago 原文作者:Aemie Jariwala(已授权) 译者 & 校正:HelloGitHub-小鱼干 &am ...

  10. cookie机制、session机制

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...