内网协议

DeeLMind大约 5 分钟

内网协议

SMBopen in new window

SMB(全称是Server Message Block)是网络文件共享协议,用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现,端口445。在很早期的windows中(windows2000以下),文件共享服务是利用TCP的139端口实现的,服务名是SMB。后来,微软又把SMB改名为CIFS协议,并且使用的是TCP的445端口。

  • 域内SMB走kerberos
  • 其它SMB走NTLM

LLMNR

LLMNR(Link-Local Multicast Name Resolution),链路本地多播名称解析 (LLMNR) 和 NetBIOS 名称服务 (NBT-NS) 是 Windows 机器在 DNS 解析失败时用于识别网络上的主机地址的两个名称解析服务。现代 Windows 计算机上默认启用 LLMNR 和 NetBIOS。

  • 数据格式

er

NetBIOS

NetBIOS,为网络基本输入输出系统(英语:Network Basic Input/Output System)的缩写,它提供了OSI模型中的会话层服务,让在不同电脑上运行的不同程序,可以在局域网中,互相连线,以及分享资料。严格来说,NetBIOS不是一种网络协议,而是应用程序接口(API)。较古老的操作系统,使用IEEE 802.2与IPX/SPX协议,可以使用NetBIOS Frames协议或NetBIOS over IPX/SPX协议来运作。现代操作系统,多数都使用TCP/IP协议,则可透过NetBIOS over TCP/IP协议来相互通信,广播包。

  • NetBIOS提供三种软件服务:
Service NamePortProtocolShort Name
NetBIOS Name Service137UDP/TCPNBNS
NetBIOS Datagram138UDPNBND
NetBIOS Session Service139TCPNBSS

SSDP

SSDP(Simple Sever Discovery Protocol),简单服务发现协议,采用基于通知和发现路由的多播发现方式实现。

MDNS

mNDS(multicast DNS),发现主机IP地址。

NBNS

NBNS是NetBIOS name service的缩写,是NetBIOS的命名服务,用于将NetBIOS名称映射到IP地址上,是NetBIOS-over-TCP(NBT)协议族的一份子。NBNS是动态DNS的一种,Microsoft的NBNS实现称为WINS。路由器可以通过发送NBNS状态请求以获取设备名,windows PC 接收到后通过WINS或将本地缓存发送命名信息给路由器。

WPADopen in new window

网络代理自动发现协议(Web Proxy Auto-Discovery Protocol,WPAD)是一种客户端使用DHCP和/或DNS发现方法来定位一个配置文件URL的方法。在检测和下载配置文件后,它可以执行配置文件以测定特定URL应使用的代理。

MS16-077open in new window

sc query winhttpautoproxysvc

function FindProxyForURL(url, host) {
    if (host == "127.0.0.1" || isPlainHostName(host) || shExpMatch (host, "(192.168.253.15)")) {
        return "DIRECT";
    }

    return "PROXY 192.168.253.15:8080";
}

er

NTLM

Windows New Technology LAN Manager (NTLM) 是问询/应答(Challenge/Response)身份验证协议,如果 Kerberos 无法对用户进行身份验证,系统将尝试改用 NTLM。

  • LM Hash 299BD128C1101FD6
  • NTLM Hash(NTHash) e02bc503339d51f71d913c245d35b50b
  • NTLMv1(Net-NTLMv1)
  • NTLMSSP(NTLMSecurity Support Provider)
netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c
  • NTLMv2(Net-NTLMv2)
vagrant::UA-COMPUTER:a1e7b994fceaf520:DEF951B748B1BD0EA53056B8394ADE8F:010100000000000000B288B74DEAD8017F0B6B94E20909E90000000002000800480032005000490001001E00570049004E002D004F003300460031005A004600560034005A004800440004003400570049004E002D004F003300460031005A004600560034005A00480044002E0048003200500049002E004C004F00430041004C000300140048003200500049002E004C004F00430041004C000500140048003200500049002E004C004F00430041004C000700080000B288B74DEAD80106000400020000000800300030000000000000000000000000300000AC9FBB1C666A6A6D9DEEF6E44868B3432CD364FA736028D0AB1E5E9BD40CDB360A001000000000000000000000000000000000000900100063006900660073002F006100620063000000000000000000

NTLM认证流程

  • 客户端向服务器发送HTTP请求,请求获得服务器资源,如访问邮件服务器资源

  • 服务器由于开启了NTLM认证,所以返回401的错误码(未授权),提示需要NTLM认证

  • 客户端发起NTLM认证,向服务器发送协商消息

  • 服务器收到消息后,生成一个随机数Challenge,明文发送回客户端

  • 客户端接收到Challenge后,使用密码hash对Challenge加密,生成Response并发送给服务器

  • 服务器接收到Response后,会向DC(Domain Controller)发送针对客户端的验证请求,该请求主要包含以下三方面的内容:客户端用户名,客户端密码哈希值加密的Challenge和原始的Challenge

  • DC根据用户名获取该帐号的密码哈希值,对原始的Challenge进行加密。如果加密后的Challenge和服务器发送的一致,则意味着用户拥有正确的密码,验证通过,否则验证失败。DC将验证结果发给服务器,并最终反馈给客户端

er

er

SID安全标识符open in new window

安全标识符SID (Security identifier) 用于唯一标识安全主体或安全组。安全主体可以表示任何可由操作系统进行身份验证的实体,例如用户帐户、计算机帐户或在用户或计算机帐户的安全上下文中运行的线程或进程。

  • 获取SID
WMIC useraccount get name,sid
S-1-5-21-1004336348-1177238915-682003330-512

MSVopen in new window & NTLMopen in new window & LMopen in new window

DPAPIopen in new window

DPAPI(Data Protection API)是一种简单的加密 应用程序编程接口,可作为Windows 2000和更高版本的Microsoft Windows 操作系统中的内置组件使用。理论上,数据保护 API 可以对任何类型的数据进行对称加密;实际上,它在 Windows 操作系统中的主要用途是执行非对称私钥的对称加密,使用用户或系统机密作为熵的重要贡献。

用于加密用户RSA密钥的 DPAPI 密钥存储在%APPDATA%\Microsoft\Protect{SID}目录下,其中 {SID} 是该用户的安全标识符。DPAPI 密钥与保护用户私钥的主密钥存储在同一文件中。它通常是 64 字节的随机数据。

DPAPI MasterKeyopen in new window

Vault

Windows stores credentials in special folders that they call "vaults" to help users login to websites and other computers.

WDigestopen in new window

SSPopen in new window

TsPkg

上次编辑于:
贡献者: DeeLMind