#include "ntlm.h"
Go to the source code of this file.
Data Structures | |
struct | smheader |
struct | DceRpcRequest |
struct | MSCStruct |
struct | DceInterface |
struct | CtxItem |
struct | DceRpcBind |
struct | SMB_COM_TRANSACTION_STRUCT |
struct | ChangeServiceConfigWStruct |
struct | WriteAndX |
struct | ReadAndX |
struct | SessionSetupAndX |
struct | SessionSetupAndXResponse |
struct | DIALECT |
struct | NegotiateProtocolRequest |
struct | NegotiateProtocolResponse |
struct | TreeConnectAndX |
struct | TreeConnectAndXResponse |
struct | FIND_FIRST2 |
struct | CLOSE |
struct | NTCreateAndX |
struct | DataBlock |
struct | CreateServiceWStruct |
struct | OpenServiceAStruct |
Defines | |
#define | _CRT_SECURE_NO_DEPRECATE |
#define | SREV(x) ((((x)&0xFF)<<8) | (((x)>>8)&0xFF)) |
#define | SMBPACKETLEN(x) ((x->SmbMessageLength) +4 ) |
#define | GetDceRpcPacketFromBuffer(buf) ((DceRpcBind*)(char*) (buf + SREV(((smheader*)buf)->SmbMessageLength) +4 - ( (SMB_COM_TRANSACTION_STRUCT*)((smheader*)buf)->buffer)->TotalDataCount)) |
#define | SMB_COM_CREATE_DIRECTORY 0x00 |
#define | SMB_COM_DELETE_DIRECTORY 0x01 |
#define | SMB_COM_OPEN 0x02 |
#define | SMB_COM_CREATE 0x03 |
#define | SMB_COM_CLOSE 0x04 |
#define | SMB_COM_FLUSH 0x05 |
#define | SMB_COM_DELETE 0x06 |
#define | SMB_COM_RENAME 0x07 |
#define | SMB_COM_QUERY_INFORMATION 0x08 |
#define | SMB_COM_SET_INFORMATION 0x09 |
#define | SMB_COM_READ 0x0A |
#define | SMB_COM_WRITE 0x0B |
#define | SMB_COM_LOCK_BYTE_RANGE 0x0C |
#define | SMB_COM_UNLOCK_BYTE_RANGE 0x0D |
#define | SMB_COM_CREATE_TEMPORARY 0x0E |
#define | SMB_COM_CREATE_NEW 0x0F |
#define | SMB_COM_CHECK_DIRECTORY 0x10 |
#define | SMB_COM_PROCESS_EXIT 0x11 |
#define | SMB_COM_SEEK 0x12 |
#define | SMB_COM_LOCK_AND_READ 0x13 |
#define | SMB_COM_WRITE_AND_UNLOCK 0x14 |
#define | SMB_COM_READ_RAW 0x1A |
#define | SMB_COM_READ_MPX 0x1B |
#define | SMB_COM_READ_MPX_SECONDARY 0x1C |
#define | SMB_COM_WRITE_RAW 0x1D |
#define | SMB_COM_WRITE_MPX 0x1E |
#define | SMB_COM_WRITE_COMPLETE 0x20 |
#define | SMB_COM_SET_INFORMATION2 0x22 |
#define | SMB_COM_QUERY_INFORMATION2 0x23 |
#define | SMB_COM_LOCKING_ANDX 0x24 |
#define | SMB_COM_TRANSACTION 0x25 |
#define | SMB_COM_TRANSACTION_SECONDARY 0x26 |
#define | SMB_COM_IOCTL 0x27 |
#define | SMB_COM_IOCTL_SECONDARY 0x28 |
#define | SMB_COM_COPY 0x29 |
#define | SMB_COM_MOVE 0x2A |
#define | SMB_COM_ECHO 0x2B |
#define | SMB_COM_WRITE_AND_CLOSE 0x2C |
#define | SMB_COM_OPEN_ANDX 0x2D |
#define | SMB_COM_READ_ANDX 0x2E |
#define | SMB_COM_WRITE_ANDX 0x2F |
#define | SMB_COM_CLOSE_AND_TREE_DISC 0x31 |
#define | SMB_COM_TRANSACTION2 0x32 |
#define | SMB_COM_TRANSACTION2_SECONDARY 0x33 |
#define | SMB_COM_FIND_CLOSE2 0x34 |
#define | SMB_COM_FIND_NOTIFY_CLOSE 0x35 |
#define | SMB_COM_TREE_CONNECT 0x70 |
#define | SMB_COM_TREE_DISCONNECT 0x71 |
#define | SMB_COM_NEGOTIATE 0x72 |
#define | SMB_COM_SESSION_SETUP_ANDX 0x73 |
#define | SMB_COM_LOGOFF_ANDX 0x74 |
#define | SMB_COM_TREE_CONNECT_ANDX 0x75 |
#define | SMB_COM_QUERY_INFORMATION_DISK 0x80 |
#define | SMB_COM_SEARCH 0x81 |
#define | SMB_COM_FIND 0x82 |
#define | SMB_COM_FIND_UNIQUE 0x83 |
#define | SMB_COM_NT_TRANSACT 0xA0 |
#define | SMB_COM_NT_TRANSACT_SECONDARY 0xA1 |
#define | SMB_COM_NT_CREATE_ANDX 0xA2 |
#define | SMB_COM_NT_CANCEL 0xA4 |
#define | SMB_COM_OPEN_PRINT_FILE 0xC0 |
#define | SMB_COM_WRITE_PRINT_FILE 0xC1 |
#define | SMB_COM_CLOSE_PRINT_FILE 0xC2 |
#define | SMB_COM_GET_PRINT_QUEUE 0xC3 |
#define | SMB_COM_READ_BULK 0xD8 |
#define | SMB_COM_WRITE_BULK 0xD9 |
#define | SMB_COM_WRITE_BULK_DATA 0xDA |
#define | SMBCLOSE 0x04 |
#define | READANDX 0x2e |
#define | WRITEANDX 0x2f |
#define | FINDFIRST2 0x32 |
#define | NEGOTIATEPROTOCOLREQUEST 0x72 |
#define | SESSIONSETUPANDX 0x73 |
#define | SESSIONLOGOFF 0x74 |
#define | TREECONNETANDX 0x75 |
#define | NTCREATEANDX 0xa2 |
#define | STOPSERVICE 1 |
#define | CHANGESERVICECONFIG 11 |
#define | CREATESERVICE 12 |
#define | OPENSCMANAGER 15 |
#define | OPENSERVICEW 16 |
#define | STARTSERVICE 19 |
#define | OPENSERVICEA 28 |
#define | CONTINUERESPONSE 1 |
#define | ERRORRESPONSE 2 |
#define | RPCBIND 0x0b |
#define | RPC_RESPONSE (uint8)0x02 |
#define | STATUS_SHARING_VIOLATION 0xc0000043 |
#define | STATUS_BAD_NETWORK_NAME 0xcc |
#define | SERVICE_QUERY_CONFIG 1 |
#define | SERVICE_CHANGE_CONFIG 2 |
#define | SERVICE_QUERY_STATUS 4 |
#define | SERVICE_ENUMERATE_DEPENDENTS 8 |
#define | SERVICE_START 16 |
#define | SERVICE_STOP 32 |
#define | SERVICE_PAUSE_CONTINUE 64 |
#define | SERVICE_INTERROGATE 128 |
#define | SERVICE_USER_DEFINED_CONTROL 256 |
#define | SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS|SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START|SERVICE_STOP|SERVICE_PAUSE_CONTINUE|SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL) |
#define | SC_MANAGER_ALL_ACCESS 0xf003f |
#define | SC_MANAGER_CONNECT 1 |
#define | SC_MANAGER_CREATE_SERVICE 2 |
#define | SC_MANAGER_ENUMERATE_SERVICE 4 |
#define | SC_MANAGER_LOCK 8 |
#define | SC_MANAGER_QUERY_LOCK_STATUS 16 |
#define | SC_MANAGER_MODIFY_BOOT_CONFIG 32 |
#define | SERVICE_WIN32_OWN_PROCESS 0x00000010 |
#define | SERVICE_WIN32_SHARE_PROCESS 0x00000020 |
#define | SERVICE_BOOT_START 0x00000000 |
#define | SERVICE_SYSTEM_START 0x00000001 |
#define | SERVICE_AUTO_START 0x00000002 |
#define | SERVICE_DEMAND_START 0x00000003 |
#define | SERVICE_DISABLED 0x00000004 |
Typedefs | |
typedef unsigned short | WCHAR |
Functions | |
smheader * | BuildSmbPacket (smheader *PreviousSmbMessage, uint8 SmbCommand, uint8 SubCommand, void *data, int DataSize) |
int | CreateServiceWStub (char *destionation, char *ContextHandle, char *ServiceName, char *ServiceDescription, char *path, int StartType, int ServiceType) |
int | ChangeServiceConfigWStub (char *destionation, char *ContextHandle, char *path, int StartType, int ServiceType) |
int | OpenServiceWStub (char *destionation, char *ContextHandle, char *servicename, int flags) |
int | OpenScManagerWStub (char *destionation, char *data, int flags) |
int | BuildTreeConnectAndXStub (char *destination, char *password, char *resource, char *service) |
char * | AddDialect (char *data, char *name, uint8 type, int *PacketSize) |
void | SetEnviroment (uint16 sessionUserID, uint16 sessionTreeID, uint16 sessionFID) |
#define CHANGESERVICECONFIG 11 |
#define CONTINUERESPONSE 1 |
Definition at line 131 of file smb.h.
Referenced by BuildSmbPacket(), and HandleIncommingSmbRequest().
#define CREATESERVICE 12 |
#define ERRORRESPONSE 2 |
Definition at line 132 of file smb.h.
Referenced by BuildSmbPacket(), and HandleIncommingSmbRequest().
#define FINDFIRST2 0x32 |
#define GetDceRpcPacketFromBuffer | ( | buf | ) | ((DceRpcBind*)(char*) (buf + SREV(((smheader*)buf)->SmbMessageLength) +4 - ( (SMB_COM_TRANSACTION_STRUCT*)((smheader*)buf)->buffer)->TotalDataCount)) |
#define NEGOTIATEPROTOCOLREQUEST 0x72 |
Definition at line 112 of file smb.h.
Referenced by BuildSmbPacket(), HandleIncommingHTTPRequest(), HandleIncommingIMAPRequest(), HandleIncommingPOP3Request(), HandleIncommingSmbRequest(), HandleIncommingSMTPRequest(), and StablishNTLMSession().
#define NTCREATEANDX 0xa2 |
Definition at line 116 of file smb.h.
Referenced by BuildSmbPacket(), ExecuteCode(), and WriteRemoteFile().
#define OPENSCMANAGER 15 |
#define OPENSERVICEW 16 |
#define READANDX 0x2e |
#define RPC_RESPONSE (uint8)0x02 |
#define RPCBIND 0x0b |
#define SC_MANAGER_CONNECT 1 |
#define SC_MANAGER_CREATE_SERVICE 2 |
#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS|SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START|SERVICE_STOP|SERVICE_PAUSE_CONTINUE|SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL) |
#define SERVICE_AUTO_START 0x00000002 |
#define SERVICE_CHANGE_CONFIG 2 |
#define SERVICE_START 16 |
#define SERVICE_STOP 32 |
#define SERVICE_WIN32_OWN_PROCESS 0x00000010 |
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020 |
#define SESSIONLOGOFF 0x74 |
#define SESSIONSETUPANDX 0x73 |
Definition at line 113 of file smb.h.
Referenced by BuildSmbPacket(), BuildSmbPacket1(), GetSmbPacket3(), HandleIncommingHTTPRequest(), HandleIncommingIMAPRequest(), HandleIncommingPOP3Request(), HandleIncommingSmbRequest(), and HandleIncommingSMTPRequest().
#define SMB_COM_CHECK_DIRECTORY 0x10 |
#define SMB_COM_CLOSE_AND_TREE_DISC 0x31 |
#define SMB_COM_CLOSE_PRINT_FILE 0xC2 |
#define SMB_COM_COPY 0x29 |
#define SMB_COM_CREATE 0x03 |
#define SMB_COM_CREATE_DIRECTORY 0x00 |
#define SMB_COM_CREATE_NEW 0x0F |
#define SMB_COM_CREATE_TEMPORARY 0x0E |
#define SMB_COM_DELETE 0x06 |
#define SMB_COM_DELETE_DIRECTORY 0x01 |
#define SMB_COM_ECHO 0x2B |
#define SMB_COM_FIND 0x82 |
#define SMB_COM_FIND_CLOSE2 0x34 |
#define SMB_COM_FIND_NOTIFY_CLOSE 0x35 |
#define SMB_COM_FIND_UNIQUE 0x83 |
#define SMB_COM_FLUSH 0x05 |
#define SMB_COM_GET_PRINT_QUEUE 0xC3 |
#define SMB_COM_IOCTL 0x27 |
#define SMB_COM_IOCTL_SECONDARY 0x28 |
#define SMB_COM_LOCK_AND_READ 0x13 |
#define SMB_COM_LOCK_BYTE_RANGE 0x0C |
#define SMB_COM_LOCKING_ANDX 0x24 |
#define SMB_COM_LOGOFF_ANDX 0x74 |
#define SMB_COM_MOVE 0x2A |
#define SMB_COM_NT_CANCEL 0xA4 |
#define SMB_COM_NT_TRANSACT 0xA0 |
#define SMB_COM_NT_TRANSACT_SECONDARY 0xA1 |
#define SMB_COM_OPEN 0x02 |
#define SMB_COM_OPEN_ANDX 0x2D |
#define SMB_COM_OPEN_PRINT_FILE 0xC0 |
#define SMB_COM_PROCESS_EXIT 0x11 |
#define SMB_COM_QUERY_INFORMATION 0x08 |
#define SMB_COM_QUERY_INFORMATION2 0x23 |
#define SMB_COM_QUERY_INFORMATION_DISK 0x80 |
#define SMB_COM_READ 0x0A |
#define SMB_COM_READ_BULK 0xD8 |
#define SMB_COM_READ_MPX 0x1B |
#define SMB_COM_READ_MPX_SECONDARY 0x1C |
#define SMB_COM_READ_RAW 0x1A |
#define SMB_COM_RENAME 0x07 |
#define SMB_COM_SEARCH 0x81 |
#define SMB_COM_SEEK 0x12 |
#define SMB_COM_SET_INFORMATION 0x09 |
#define SMB_COM_SET_INFORMATION2 0x22 |
#define SMB_COM_TRANSACTION 0x25 |
Definition at line 64 of file smb.h.
Referenced by AttackWeakServices(), BuildSmbPacket(), and ExecuteCode().
#define SMB_COM_TRANSACTION2_SECONDARY 0x33 |
#define SMB_COM_TRANSACTION_SECONDARY 0x26 |
#define SMB_COM_TREE_CONNECT 0x70 |
#define SMB_COM_TREE_DISCONNECT 0x71 |
#define SMB_COM_UNLOCK_BYTE_RANGE 0x0D |
#define SMB_COM_WRITE 0x0B |
#define SMB_COM_WRITE_AND_CLOSE 0x2C |
#define SMB_COM_WRITE_AND_UNLOCK 0x14 |
#define SMB_COM_WRITE_BULK 0xD9 |
#define SMB_COM_WRITE_BULK_DATA 0xDA |
#define SMB_COM_WRITE_COMPLETE 0x20 |
#define SMB_COM_WRITE_MPX 0x1E |
#define SMB_COM_WRITE_PRINT_FILE 0xC1 |
#define SMB_COM_WRITE_RAW 0x1D |
#define SMBCLOSE 0x04 |
#define STARTSERVICE 19 |
#define STATUS_BAD_NETWORK_NAME 0xcc |
#define STATUS_SHARING_VIOLATION 0xc0000043 |
#define TREECONNETANDX 0x75 |
Definition at line 115 of file smb.h.
Referenced by BuildSmbPacket(), ExecuteCode(), and WriteRemoteFile().
#define WRITEANDX 0x2f |
Definition at line 110 of file smb.h.
Referenced by BuildSmbPacket(), ExecuteCode(), and WriteRemoteFile().
char* AddDialect | ( | char * | data, | |
char * | name, | |||
uint8 | type, | |||
int * | PacketSize | |||
) |
Definition at line 175 of file smb.cpp.
Referenced by HandleIncommingHTTPRequest(), HandleIncommingIMAPRequest(), HandleIncommingPOP3Request(), HandleIncommingSmbRequest(), HandleIncommingSMTPRequest(), and StablishNTLMSession().
smheader* BuildSmbPacket | ( | smheader * | PreviousSmbMessage, | |
uint8 | SmbCommand, | |||
uint8 | SubCommand, | |||
void * | data, | |||
int | DataSize | |||
) |
Definition at line 218 of file smb.cpp.
References smheader::buffer, chartoWide(), CONTINUERESPONSE, ERRORRESPONSE, FINDFIRST2, MultpleID, NEGOTIATEPROTOCOLREQUEST, NTCREATEANDX, READANDX, RPCBIND, SESSIONSETUPANDX, SMB_COM_CHECK_DIRECTORY, SMB_COM_CLOSE_AND_TREE_DISC, SMB_COM_CLOSE_PRINT_FILE, SMB_COM_COPY, SMB_COM_CREATE, SMB_COM_CREATE_DIRECTORY, SMB_COM_CREATE_NEW, SMB_COM_CREATE_TEMPORARY, SMB_COM_DELETE, SMB_COM_DELETE_DIRECTORY, SMB_COM_ECHO, SMB_COM_FIND, SMB_COM_FIND_CLOSE2, SMB_COM_FIND_NOTIFY_CLOSE, SMB_COM_FIND_UNIQUE, SMB_COM_FLUSH, SMB_COM_GET_PRINT_QUEUE, SMB_COM_IOCTL, SMB_COM_IOCTL_SECONDARY, SMB_COM_LOCK_AND_READ, SMB_COM_LOCK_BYTE_RANGE, SMB_COM_LOCKING_ANDX, SMB_COM_LOGOFF_ANDX, SMB_COM_MOVE, SMB_COM_NT_CANCEL, SMB_COM_NT_TRANSACT, SMB_COM_NT_TRANSACT_SECONDARY, SMB_COM_OPEN, SMB_COM_OPEN_ANDX, SMB_COM_OPEN_PRINT_FILE, SMB_COM_PROCESS_EXIT, SMB_COM_QUERY_INFORMATION, SMB_COM_QUERY_INFORMATION2, SMB_COM_QUERY_INFORMATION_DISK, SMB_COM_READ, SMB_COM_READ_BULK, SMB_COM_READ_MPX, SMB_COM_READ_MPX_SECONDARY, SMB_COM_READ_RAW, SMB_COM_RENAME, SMB_COM_SEARCH, SMB_COM_SEEK, SMB_COM_SET_INFORMATION, SMB_COM_SET_INFORMATION2, SMB_COM_TRANSACTION, SMB_COM_TRANSACTION2_SECONDARY, SMB_COM_TRANSACTION_SECONDARY, SMB_COM_TREE_CONNECT, SMB_COM_TREE_DISCONNECT, SMB_COM_UNLOCK_BYTE_RANGE, SMB_COM_WRITE, SMB_COM_WRITE_AND_CLOSE, SMB_COM_WRITE_AND_UNLOCK, SMB_COM_WRITE_BULK, SMB_COM_WRITE_BULK_DATA, SMB_COM_WRITE_COMPLETE, SMB_COM_WRITE_MPX, SMB_COM_WRITE_PRINT_FILE, SMB_COM_WRITE_RAW, SMBCLOSE, SREV, STATUS_BAD_NETWORK_NAME, TREECONNETANDX, smheader::UserID, UserID, and WRITEANDX.
Referenced by AttackWeakServices(), BuildSmbPacket1(), ExecuteCode(), GetSmbPacket3(), HandleIncommingHTTPRequest(), HandleIncommingIMAPRequest(), HandleIncommingPOP3Request(), HandleIncommingSmbRequest(), HandleIncommingSMTPRequest(), StablishNTLMSession(), and WriteRemoteFile().
int BuildTreeConnectAndXStub | ( | char * | destination, | |
char * | password, | |||
char * | resource, | |||
char * | service | |||
) |
Definition at line 156 of file smb.cpp.
References TreeConnectAndX::AndXCommand, TreeConnectAndX::AndXOffset, smheader::buffer, TreeConnectAndX::ByteCount, chartoWide(), TreeConnectAndX::flags, TreeConnectAndX::Password, TreeConnectAndX::PasswordLen, TreeConnectAndX::reserved2, and TreeConnectAndX::WordCount.
Referenced by ExecuteCode(), and WriteRemoteFile().
int ChangeServiceConfigWStub | ( | char * | destionation, | |
char * | ContextHandle, | |||
char * | path, | |||
int | StartType, | |||
int | ServiceType | |||
) |
Definition at line 82 of file smb.cpp.
References chartoWide().
Referenced by AttackWeakServices().
int CreateServiceWStub | ( | char * | destionation, | |
char * | ContextHandle, | |||
char * | ServiceName, | |||
char * | ServiceDescription, | |||
char * | path, | |||
int | StartType, | |||
int | ServiceType | |||
) |
Definition at line 48 of file smb.cpp.
References InitDataBlock().
Referenced by ExecuteCode().
int OpenScManagerWStub | ( | char * | destionation, | |
char * | data, | |||
int | flags | |||
) |
Definition at line 125 of file smb.cpp.
References MSCStruct::AccessMask, MSCStruct::ActualCount, chartoWide(), MSCStruct::Database, MSCStruct::lpFileNameW, MSCStruct::MaxCount, MSCStruct::Offset, and MSCStruct::ReferentID.
Referenced by AttackWeakServices(), and ExecuteCode().
int OpenServiceWStub | ( | char * | destionation, | |
char * | ContextHandle, | |||
char * | servicename, | |||
int | flags | |||
) |
Definition at line 99 of file smb.cpp.
References InitDataBlock().
Referenced by AttackWeakServices(), and ExecuteCode().