honeypotの簡易解析29日目

2019-04-29のアクセス数は383件でした。

■送信元IPアドレスの数は 52件です。

■メソッドの一覧と件数は以下です。

method総数
GET375
HEAD3
OPTIONS2
POST3
合計 結果383

■アクセスパス一覧と件数は以下です。

pathmethod総数
/ GET45
/ HEAD1
/ OPTIONS2
/.well-known/security.txtGET1
/CFIDE/administrator/GET1
/evox/aboutGET1
/favicon.icoGET1
/HNAP1GET1
/Lists/admin.phpGET1
/manager/htmlGET314
/Nmap/folder/check1556505336GET1
/nmaplowercheck1556505336GET1
/NmapUpperCheck1556505336GET1
/nx8j78af1b.jspGET2
/robots.txtGET1
/robots.txtHEAD1
/sdkPOST1
/sitemap.xmlGET1
/wp-login.phpGET1
/wp-login.phpPOST1
/xmlrpc.phpPOST1
http://110.249.212.46/testget?q=23333&port=80GET2
http://112.124.42.80:63435/HEAD1

気になるlog

pathが以下の3件

/Nmap/folder/check1556505336
/nmaplowercheck1556505336
/NmapUpperCheck1556505336

nmapのスクリプトでluaで記載されている。

関連する関数のコメントに、以下の内容があった。(原文ママ)

---Try requesting a non-existent file to determine how the server responds to
-- unknown pages ("404 pages"), which a) tells us what to expect when a
-- non-existent page is requested, and b) tells us if the server will be
-- impossible to scan. If the server responds with a 404 status code, as it is
-- supposed to, then this function simply returns 404. If it contains one of a
-- series of common status codes, including unauthorized, moved, and others, it
-- is returned like a 404.
--
-- I (Ron Bowes) have observed one host that responds differently for three
-- scenarios:
-- * A non-existent page, all lowercase (a login page)
-- * A non-existent page, with uppercase (a weird error page that says, "Filesystem is corrupt.")
-- * A page in a non-existent directory (a login page with different font colours)
--
-- As a result, I've devised three different 404 tests, one to check each of
-- these conditions. They all have to match, the tests can proceed; if any of
-- them are different, we can't check 404s properly.
--
-- @param host The host object.
-- @param port The port to which we are establishing the connection.
-- @return status Did we succeed?
-- @return result If status is false, result is an error message. Otherwise, it's the code to expect (typically, but not necessarily, '404').
-- @return body Body is a hash of the cleaned-up body that can be used when detecting a 404 page that doesn't return a 404 error code.

<<Google翻訳>>

存在しないファイルを要求して、サーバーが未知のページ( “404ページ”)にどのように応答するかを判断します。a)存在しないページが要求されたときに何を期待するかを示します。サーバーをスキャンすることは不可能になります。サーバーが404ステータスコードで応答すると、 想定どおり、この関数は単純に404を返します。

だそうです。ちなみに数字の部分はOS.timeにて計算していました。

function identify_404(host, port)
  local data
  local bad_responses = { 301, 302, 400, 401, 403, 499, 501, 503 }

  -- The URLs used to check 404s
  local URL_404_1 = '/nmaplowercheck' .. os.time(os.date('*t'))
  local URL_404_2 = '/NmapUpperCheck' .. os.time(os.date('*t'))
  local URL_404_3 = '/Nmap/folder/check' .. os.time(os.date('*t'))良いです

マッチ&レスポンスルールで404を返すようにしておいた方が良いですな。