专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » radmin服务端:Radmin服务端保持连接不断问题分析和解决 »正文

radmin服务端:Radmin服务端保持连接不断问题分析和解决

来源: 发布时间:星期六, 2009年9月12日 浏览:0次 评论:0
1、问题描述
  Radmin是个绝佳远程控制软件Software用来做跳板后门再好不过了不过每次连过跳板后察看跳板连线可以仍然看见我们和跳板上Radmin连接只不过显示为TIME_WAIT直这样


QUOTE:
Proto Local Address       Foreign Address     State
TCP   0.0.0.0:135         0.0.0.0:0         LISTENING
TCP   0.0.0.0:445         0.0.0.0:0         LISTENING
TCP   0.0.0.0:1030       0.0.0.0:0         LISTENING
TCP   127.0.0.1:1031       0.0.0.0:0         LISTENING
TCP   192.168.11.1:139     0.0.0.0:0         LISTENING
TCP   192.168.72.1:139     0.0.0.0:0         LISTENING
TCP   192.168.168.220:1030   192.168.168.221:1034   TIME_WAIT
UDP   0.0.0.0:445         *:*
UDP   0.0.0.0:1026       *:*
UDP   127.0.0.1:123       *:*
UDP   127.0.0.1:1900       *:*
UDP   192.168.11.1:123     *:*
UDP   192.168.11.1:137     *:*
UDP   192.168.11.1:138     *:*
UDP   192.168.11.1:1900     *:*
UDP   192.168.72.1:123     *:*
UDP   192.168.72.1:137     *:*
UDP   192.168.72.1:138     *:*
UDP   192.168.72.1:1900     *:*
UDP   192.168.168.220:123   *:*
UDP   192.168.168.220:1900   *:*

2、问题分析
  初步猜测应该是opt设置超时有问题可能是设置了无限超时?
  调试Radmin服务端下断点在opt结果如下:
次断下来


CODE:
71A42E30 > 8BFF         MOV EDI,EDI
71A42E32   55         PUSH EBP
71A42E33   8BEC         MOV EBP,ESP
71A42E35   837D 0C 00     CMP DWORD PTR SS:[EBP+C],0
71A42E39   0F84 25010000   JE WSOCK32.71A42F64
71A42E3F   8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]
71A42E42   837D 0C 06     CMP DWORD PTR SS:[EBP+C],6
71A42E46   8B4D 14       MOV ECX,DWORD PTR SS:[EBP+14]
71A42E49   74 75       JE SHORT WSOCK32.71A42EC0
71A42E4B   FF75 18       PUSH DWORD PTR SS:[EBP+18]
71A42E4E   51         PUSH ECX
71A42E4F   50         PUSH EAX
71A42E50   FF75 0C       PUSH DWORD PTR SS:[EBP+C]
71A42E53   FF75 08       PUSH DWORD PTR SS:[EBP+8]
71A42E56   E8 09000000   CALL
71A42E5B   5D         POP EBP
71A42E5C   C2 1400       RETN 14
71A42E5F   90         NOP
71A42E60   90         NOP
71A42E61   90         NOP
71A42E62   90         NOP
71A42E63   90         NOP
71A42E64 - FF25 0010A471   JMP DWORD PTR DS:[<&WS2_32.#21__socko>; WS2_32.sockopt

察看堆栈:


CODE:
0012F808   0096D367 /CALL 到 sockopt 来自 0096D362
0012F80C   0000007C |Socket = 7C
0012F810   0000FFFF |Level = SOL_SOCKET
0012F814   00000080 |Option = SO_LINGER
0012F818   0012F844 |Data = 0012F844
0012F81C   00000004 \DataSize = 4
0012F820   0000FFFF
0012F824   0012F84C
0012F828 /0012F850
0012F82C |009652F2 返回到 009652F2 来自 0096D340
0012F830 |00000080
0012F834 |0012F844
0012F838 |00000004
0012F83C |0012F870
0012F840 |001D0406
0012F844 |00010001
0012F848 |0012F870
0012F84C |0000007C
0012F850 ]0012F884
[Copy to clipboard]

可以看到它设置了SO_LINGER选项值为0x00010001
第 2次断点:


CODE:
71A42E30 > 8BFF         MOV EDI,EDI
71A42E32   55         PUSH EBP
71A42E33   8BEC         MOV EBP,ESP
71A42E35   837D 0C 00     CMP DWORD PTR SS:[EBP+C],0
71A42E39   0F84 25010000   JE WSOCK32.71A42F64
71A42E3F   8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]
71A42E42   837D 0C 06     CMP DWORD PTR SS:[EBP+C],6
71A42E46   8B4D 14       MOV ECX,DWORD PTR SS:[EBP+14]
71A42E49   74 75       JE SHORT WSOCK32.71A42EC0
71A42E4B   FF75 18       PUSH DWORD PTR SS:[EBP+18]
71A42E4E   51         PUSH ECX
71A42E4F   50         PUSH EAX
71A42E50   FF75 0C       PUSH DWORD PTR SS:[EBP+C]
71A42E53   FF75 08       PUSH DWORD PTR SS:[EBP+8]
71A42E56   E8 09000000   CALL
71A42E5B   5D         POP EBP
71A42E5C   C2 1400       RETN 14

堆栈:


CODE:
0012F80C   0096D367 /CALL 到 sockopt 来自 0096D362
0012F810   00000078 |Socket = 78
0012F814   0000FFFF |Level = SOL_SOCKET
0012F818   00000080 |Option = SO_LINGER
0012F81C   0012F84C |Data = 0012F84C
0012F820   00000004 \DataSize = 4
0012F824   0000FFFF
0012F828   0012F848
0012F82C /0012F850
0012F830 |00965419 返回到 00965419 来自 0096D340
0012F834 |00000080
0012F838 |0012F84C
0012F83C |00000004
0012F840 |0012F864
0012F844 |0012F870
0012F848 |00000078
0012F84C |00010001
0012F850 ]0012F884

可见第次和第 2次相同
F9,没有下个断点可见只有这两处上网搜索SO_LINGER选项其描述如下:


QUOTE:
  /* 当连接中断时需要延迟关闭(linger)以保证所有数据都
   * 被传输所以需要打开SO_LINGER这个选项     //注:大致意思就是说SO_LINGER选项用来设置当close时是否马上关闭
   * linger结构在/usr//linux/.h中定义://注:这个结构就是SetSocketOpt中Data数据结构
   *  struct linger
   *  {
   *   l_onoff;  /* Linger active */       //低字节0和非0用来表示是否延时关闭
   *   l_linger; /* How long to linger */   //高字节,延时时间数单位为秒
   *  };
   *  如果l_onoff为0则延迟关闭特性就被取消如果非零则允许套接口延迟关闭
   *  l_linger字段则指明延迟关闭时间
   */

更具体描述如下:
若设置了SO_LINGER(亦即linger结构中l_onoff域设为非零参见2.44.1.7和4.1.21各节)并设置了零超时间隔则close不被阻塞立即执行不论是否有排队数据未发送或未被确认这种关闭方式称为“强制”或“失效”关闭套接口虚电路立即被复位且丢失了未发送数据在远端recv将以WSAECONNRESET出错

若设置了SO_LINGER并确定了非零超时间隔则close阻塞进程直到所剩数据发送完毕或超时这种关闭称为“优雅”关闭请注意如果套接口置为非阻塞且SO_LINGER设为非零超时则close将以WSAEWOULDBLOCK返回

若在个流类套接口上设置了SO_DONTLINGER(也就是说将linger结构l_onoff域设为零;参见2.44.1.74.1.21节)则close立即返回但是如果可能排队数据将在套接口关闭前发送请注意在这种情况下WINDOWS套接口实现将在段不确定时间内保留套接口以及其他资源这对于想用所以套接口应用来说有定影响

这是网上解释
主要是影响close 动作
知道了问题原因我们就动手修改下试试


CODE:
0012F80C   0096D367 /CALL 到 sockopt 来自 0096D362
0012F810   00000078 |Socket = 78
0012F814   0000FFFF |Level = SOL_SOCKET
0012F818   00000080 |Option = SO_LINGER
0012F81C   0012F84C |Data = 0012F84C
0012F820   00000004 \DataSize = 4
0012F824   0000FFFF
0012F828   0012F848
0012F82C /0012F850
0012F830 |00965419 返回到 00965419 来自 0096D340
0012F834 |00000080
0012F838 |0012F84C
0012F83C |00000004
0012F840 |0012F864
0012F844 |0012F870
0012F848 |00000078
0012F84C |00010100     //原来00010001表示延时256秒将延时改为1秒

F9运行用客户端连接连上后再断开察看服务端连线发现以前总是显示为TIME_WAIT连接现在马上消失了至此问题解决:)
3、Radmin修改
Radmin保护措施做还是很不错真正执行个RES资源只负责将其解压缩到内存中并执行如果要修改就需要自己解压缩修改后再自己压缩了放回去具体如何做我就不说了:)
提示:如果要重复我样步骤直接下opt是断不下来先下jmp eax 断下来后F8再下soketopt断点好了就提示这么多了



  • 篇文章: 从手工注入看防御的access篇

  • 篇文章: 用Administrator权限使用windows xp
  • 0

    相关文章

    读者评论

    发表评论

    • 昵称:
    • 内容: