fr33f0r4ll

自分用雑記

Honeypot始めました

寒くなってきたのでハニポを立てることにしました。

設定とか

ハニポサーバ

ssh, telnetハニーポットであるcowrieを、Docker上で動かすようにしました。 AWSのEC2の無料枠内を使ってます、今のところ問題なく動作しているみたいです。 ハニーポットとかAWSとか何もかも始めてでしたが1日でセットアップを終わらせることができました。 Dockerだとローカルで再現して検証するのが楽でいいですね。

docker-compose.ymlはこんな感じです。

version: '3'
services:
  cowrie:
    image: cowrie/cowrie:latest
    ports:
      - "22:2222"
      - "23:2223"
    volumes:
      - ./etc/cowrie.cfg:/cowrie/cowrie-git/etc/cowrie.cfg:ro
      - ./var:/cowrie/cowrie-git/var

これだけで動く、最高! cowrie/cowrieのイメージは一応cowrieの公式イメージだそうです、githubの方にリンク貼ってあるし多分問題ないでしょう。 設定は./etc/cowrie.cfgに配置してあるのをコンテナにも置くようにして反映させています。 ログは./varに置かれるようにしています、マルウェアも降ってくるのであんまり良くない気もしますが多分大丈夫でしょう。 コンテナにマウントする前に、./var内に適切にディレクトリを配置しておかないとエラーを吐くので注意が必要です。 以下のようになっていれば大丈夫です。

var/run
var/lib
var/lib/cowrie
var/lib/cowrie/tty
var/lib/cowrie/downloads
var/log
var/log/cowrie

出力はjson形式でやっています。 本当はElasticsearchに吐くようにしたいけど、AWS無料枠制限でこれ以上サーバを立てられないのでローカルにログを移動してそれをローカルのElasticsearchに投げてます。 雑ですね。

cowrieの設定は、telnetを開けて認証をランダムにしたくらいです。

ログ解析環境

解析環境は、ElasticsearchとKibanaをDockerで動かしています。 Docker素晴しい。 docker-compose.ymlはこんな感じ。

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    expose:
      - 9200
    ports:
      - 9200:9200
    networks:
      intra:
        ipv4_address: 172.16.200.102
    volumes:
      - ./elasticsearch/data:/usr/share/elasticsearch/data
  kibana:
    image: docker.elastic.co/kibana/kibana:6.4.2
    volumes:
      - ./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml:ro
    networks:
      intra:
        ipv4_address: 172.16.200.103
    depends_on:
      - elasticsearch
  nginx:
    image: nginx:latest
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/htpasswd:/usr/local/nginx/.htpasswd:ro
    networks:
      intra:
        ipv4_address: 172.16.200.104
    ports:
      - 80:80
      
networks:
  intra:
    driver: bridge
    ipam:
      driver: default
      config:
      -
        subnet: 172.16.200.0/24

kibana.ymlだけ用意する必要がある(Elasticsearchのアドレス指定のため)が、Nginxを消してKibanaの方に80:5601とか設定すればnginx関連は不要になる。 他の用途に使っていたものを流用しているのであまり最適化されてないですね。TODO: あとでやる

いろいろ遊んでる。

f:id:hiziriAI:20181117184611p:plain

運用状況

さっそく色々降ってきてるみたいで、有名なraspberryraspberry993311もいた。 他にもjirenみたいな名前のやつとかxorddosみたいな名前のやつとか来てました。

ログインをランダムにしているので、色んなログイン情報取れるのが良い感じ。

どこかのサーバからロシアの検索エンジンあてのクエリみたいなものが転送されてくるのが一番謎ですね。 AmazonとかにHTTPクエリっぽいのが転送されてきてました。

ストレージは30GBくらいまで持つみたいなので、ログはギリギリまで溜めて削除する運用方針です。

今後

次はtsharkとかでパケットのログも取りたいところです。 おもしろいログがあったら書きます。