Commit a965a932 authored by jan.koester's avatar jan.koester
Browse files

dce support

parent 4dda1c69
Loading
Loading
Loading
Loading
Loading
+1 −0
Changes for CMakeLists.txt: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ add_subdirectory(src)
add_subdirectory(plugin/krb5)
add_subdirectory(plugin/ad)
add_subdirectory(plugin/dns)
add_subdirectory(plugin/smb)
add_subdirectory(client)
add_subdirectory(cli)

+24 −0
Changes for docs/ROADMAP.md: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -76,3 +76,27 @@ The directory layer maps them onto AD objects and adds generic objects:
  `rpcclient`, `smbclient`, `dig`, `nsupdate`.
* adconnect (`adconnectd -j`) as the FenrirOS client.
* Finally a Windows client VM (domain join, logon, GPO processing).

## Windows join block (phases 6-8) — detailed plan

A Windows domain join (`Add-Computer` / `netdom join`) drives, after DNS+CLDAP:
1. **SMB2/3 server** on 445: NEGOTIATE, SESSION_SETUP (SPNEGO→Kerberos, the
   GSS code we have), TREE_CONNECT to IPC$, CREATE/READ/WRITE/IOCTL/CLOSE on
   named pipes, message signing (AES-CMAC, SMB3) / SMB2 signing (HMAC-SHA256).
2. **DCE/RPC** over the pipes: bind / alter_context (with auth: Kerberos via
   SMB session, or netlogon schannel), request/response with fragmentation,
   NDR transfer syntax.
3. **RPC services**:
   - `\lsarpc` (LSA): OpenPolicy2, QueryInfoPolicy (DNS/NetBIOS domain, SID),
     LookupNames/LookupSids, Close.
   - `\samr` (SAM): Connect5, EnumDomains, LookupDomain, OpenDomain,
     CreateUser2 (machine account NAME$), OpenUser, SetUserInfo (unicodePwd,
     userAccountControl=WORKSTATION_TRUST), QueryUserInfo, Close.
   - `\netlogon`: ServerReqChallenge, ServerAuthenticate3 (secure channel with
     the machine key), ServerPasswordSet2, LogonSamLogonEx, GetDCName.
4. Build order: NDR engine (done first) → DCE/RPC PDU codec → SMB2 wire →
   named-pipe plumbing → lsarpc → samr → netlogon. Each layer unit-tested;
   final end-to-end only against real Windows.

Reference: adconnect/src/netlogon.cpp (NDR quirks), sharedd/src/rpc.cpp
(srvsvc/wkssvc pipe patterns), Samba as the byte reference.
+6 −0
Changes for plugin/smb/CMakeLists.txt: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
add_library(fenrirds-smb SHARED smb.cpp)
target_include_directories(fenrirds-smb PUBLIC ${JSONC_INCLUDE_DIR})
target_link_libraries(fenrirds-smb PUBLIC fenrirds-core uuidp::uuidp json-c::json-c netplus::netplus confplus::confplus)
set_target_properties(fenrirds-smb PROPERTIES OUTPUT_NAME "fenrirds-smb" VERSION ${version} SOVERSION 0)
install(TARGETS fenrirds-smb DESTINATION ${CMAKE_INSTALL_LIBDIR}/fenrirds)
install(FILES smb.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/fenrirds)

plugin/smb/smb.cpp

0 → 100644
+456 −0

File added.

Preview size limit exceeded, changes collapsed.

plugin/smb/smb.h

0 → 100644
+112 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading