NTP时间欺骗



当Windows机器从NTP服务器请求时间时,我正试图向它发送一个伪造的时间。

到目前为止,我的服务器会显示数据包并发回数据,但我似乎不知道我需要发送什么才能给Windows一个假时间。我尝试捕获要发送的合法数据包,但失败了。

在这个例子中,我只是发送空白,我试图弄清楚要发送什么数据来告诉计算机,例如时间是上午10:00,而实际上是下午12点。

我打算在局域网上伪造DNS查询,将其重定向到该服务器,该服务器将以错误的时间响应。

我听说这是可以做到的,但从未见过这样做的工具,所以这就是我现在要做的。

require 'socket'
class UDPServer
  def initialize(port)
    @port = port
  end
    def start
    @socket = UDPSocket.new
    @socket.bind('', @port) 
    data = " "
    while true
      packet = @socket.recvfrom(1024)
      puts packet
      @socket.send("${data}", 0, '10.0.0.16', "#{@port}")
    end
  end
end
server = UDPServer.new(123)
server.start

这是可以做到的。你需要回复客户的请求。在该回复中,您将需要使用(您的代码不这样做):

T1 = client timestamp at time of departure of request packet from client
and
T2 = server timestamp at time of ARRIVAL of request packet at server
and
T3 = server timestamp at time of departure of REPLY packet from server (ca be thee same s T2).

我在你的代码中没有看到这一点。此外,pkt的其余部分需要是";OK"--不确定你的是不是(似乎不是)。

最新更新