Skip to content

Latest commit

 

History

History
114 lines (49 loc) · 4.67 KB

TA0000基础知识-SMB协议与IPC$.md

File metadata and controls

114 lines (49 loc) · 4.67 KB

Windows基础-SMB协议与IPC$

RPC

Chapter 14. Intermediary Protocols

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wpo/7d2df784-557e-4fde-9281-9509653a0f17

远程过程调用(Remote Procedure Call, RPC)是一种进程间通信(interprocess communication, IPC)机制,它提供在不同进程中进行数据交换和调用的功能;不同的进程可以在同一台计算机上,在局域网(LAN)上或在Internet上,所以RPC常常会涉及到网络。

主流的RPC机制有Unix上的SUN RPC、Windows上的DCE RPC

RPC协议有很多种实现方式,基于SMB,直接基于TCP/UDP,或基于HTTP等等;

SMB协议

NetBios, NetBios over TCP/IP, SMB 之间的关系

https://en.wikipedia.org/wiki/Server_Message_Block

SMB功能

在计算机网络中,SMB协议是一种通信协议,用于提供文件共享,文件打印,以及带身份验证的进程间通信机制。SMB协议是客户端-服务器模式,SMB协议的主要涉及两部分功能:

  • 一部分专门涉及对文件系统的访问,以便客户端可以向文件服务器发出请求;
  • 另一部分专门研究进程间通信(IPC),即通过共享命名管道实现进程通信。

SMB端口

SMB协议有两种运行方式 :

  • 第一种通过NetBios API,使用的是UDP的137和138端口以及TCP的137和139的端口。

    如今,我们使用的网络协议栈是TCP/IP协议栈,在Windows操作系统上,NetBios运行在NetBios over TCP/IP的协议上,NetBios over TCP/IP(简称NBT或者NetBT)是一个网络协议,允许以前使用NetBios API的应用程序能够在现代的TCP/IP网络中。如下图:

img

  • SMB通常在NetBT之上运行,从Windows 2000开始也可以直接在TCP / IP上运行而不涉及NetBT,此时使用的是445端口

SMB过程

In the most common uses of SMB, a client makes a NetBT session connection to a host and then starts an SMB session. At the beginning of the SMB session, the server and the client negotiate a dialect of SMB. Different dialects support different SMB features. Once the dialect has been negotiated, the client authenticates if the dialect supports authentication at this point, and then requests a resource from the server with what is called a tree connect. When the client creates the initial SMB connection and authenticates, it gets an identifier called a user ID or UID. If the client wants another resource, the client will reuse the existing connection and merely do an additional tree connect request. The server will determine whether the client is authorized to do the tree request by looking at the permissions granted to the UID. Multiple resource connections may be used at the same time; they are distinguished by an identifier called a tree ID or TID. docstore.mik.ua/orelly/networking_2ndEd/fire/ch14_04.htm

以下是访问 \\ringdc-pc\c$ 抓包分析

SMB.pcapng

image-20201220120057850

IPC$

An Introduction to SMB for Network Security Analysts

Abusing Windows Admin Shares (Lateral Movement)

Windows默认会开启3类network share,使用net sharenet view \\pc-name /all可以查看:

  1. c$, d$... 文件共享,对应本机C盘,D盘
  2. ADMIN$ 文件共享,对应本机C:\Windows
  3. IPC$,RPC接口、可以理解为一组named pipes server的入口

image-20201122111311227

samr

image-20201122111729095

atsvc

image3

svcctl&PSEXEC

PSEXEC可以使用以下命令远程执行命令,其原理就是先连接Admin$拷贝PSEXESVC.exe;再通过IPC$连接svcctl,远程创建并启动服务psexecsvc;客户端连接执行命令,服务端启动相应的程序并执行回显数据

net use \\win10-pc4\ipc$ “Test1234” /user:dell
psexec.exe \\win10-pc4 cmd.exe     

或 

PsExec64.exe -accepteula \\win10-pc4 -u dell -p Test1234 cmd.exe

以上命令不需要以管理员权限执行,PsExec64.exe加了-s参数,则目标机器上可执行程序是以system权限启动,否则以medium权限启动。

image-20201122114024455

image1

image2