1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SplunkのSearchTutorialでいろいろと調べてみる(sourcetype=secure)

Posted at

SearchTutorialのデータを利用して、いろいろと調べてみる。

データについてはこちら

今回はデータをindex=tutorialに取り込んだので、自分の環境に合わせてください。

検索期間は「全時間」固定

ログイン失敗した数を調べる

faild_password.spl
index=tutorial sourcetype=secure failed password 
| rex "(?<process>\w+)\[\d+\]: (?<msg>.*)" 
| rex field=msg "for (?<valid>invalid user )?(?<username>.*) from (?<src>\S+)" 
| eval status=mvindex(split(msg," "),0) 
| fillnull valid value="valid user" 
| stats count dc(username) values(username) as username by valid src delim="/"
| sort 0 src 
| nomv username

sourcetype=secureにログインの成否が記録されているので、調べてみた。
とりあえずAcceptしているのは正規ユーザのみだったので、不正ログインだけに絞っている。

結果

valid src count dc(username) username
invalid user 2.229.4.58 106 56 admin/administrator/amavis/appserver/art/db/db2inst1/dba/demo/desktop/dwane/edmond/email/fpass/george/git/gitolite/guest/helpdesk/icinga/inet/info/informix/irc/itmL2user/itmadmin/itmuser/jabber/jetty/library/local/mailman/mysql/operator/oracle/perl/postgres/rdb/redmine/rightscale/robbie/sales/sapadmin/sunny/system/tavi/testing/tomcat/trac/uni/vmware/vpxuser/web001/whois/workshop/zabbix
valid user 2.229.4.58 52 21 apache/bin/daemon/doc/ftp/games/grumpy/hammer/happy/jboss/jira/mail/nagios/ncsd/news/nobody/root/sleepy/sneezy/squid/sync
valid user 10.1.10.172 16 1 myuan
valid user 10.2.10.163 47 1 nsharpe
valid user 10.3.10.46 121 1 djohnson
invalid user 12.130.60.4 164 69 abc/admin/administrator/amanda/appserver ... 

解説

  • Splunk Add-on for Unix and Linuxを入れていれば、フィールドが切れていそうな気がするけど、切れていないので、rexで抽出
  • CEFとかLEEFなんかは一回このように大きく切り出して、そこから抽出したほうがいいと思います。_transforms.conf_もそんな感じで設定できるし
  • validフィールドを作ったのは、最初は不正アクセスだけ表示させるため。
    stats byの引数にしてやれば、それだけの表示できるので。
  • 後々fillnullで無い時の値を入れてみた。
  • rexでフィールドを抽出しなくてもいい、mvindex(split())はかなり使えると思います。
  • statsのオプションのdelim=は後のnomvの時用

アカウント名の数を調べる

account_count.spl
index=tutorial sourcetype=secure failed password 
| rex "(?<process>\w+)\[\d+\]: (?<msg>.*)" 
| rex field=msg "for (?<valid>invalid user )?(?<username>.*) from (?<src>\S+)" 
| eval status=mvindex(split(msg," "),0) 
| fillnull valid value="valid user" 
| stats count dc(src) by username valid
| sort 0 - count

フィールド抽出を生かして、人気のあるアカウントを調べてみた。

結果

username valid count dc(src)
root valid user 1493 182
administrator invalid user 1020 180
admin invalid user 938 177
operator invalid user 923 181
mail valid user 753 176
mailman invalid user 752 175
irc invalid user 644 173

見事に特権ユーザっぽいアカウントの数が多い

_invalid user_は放っておいていいとして、_valid_なユーザはパスワード以外のセキュリティも検討しないといけないでしょう

SSHのログイン時間を調べる

login.spl
index="tutorial" sourcetype=secure pam_unix sshd
| reverse
| rex "session (?<status>\w+) for user (?<username>\w+)"
| table _time status username
| streamstats count(eval(status="closed")) as session current=f by username
| stats min(_time) as firsttime max(_time) as endtime range(_time) as duration by session username
| sort 0 session
| eval duration=tostring(duration,"duration")
| convert ctime(firsttime) ctime(endtime)

結果

session username firsttime endtime duration
0 djohnson 05/15/2020 00:15:02 05/15/2020 00:15:02 00:00:00
0 myuan 05/15/2020 00:15:02 05/15/2020 00:15:03 00:00:01
0 nsharpe 05/15/2020 00:15:02 05/15/2020 00:15:02 00:00:00
1 djohnson 05/15/2020 00:15:02 05/15/2020 00:15:02 00:00:00
1 myuan 05/15/2020 00:15:03 05/15/2020 00:15:05 00:00:02
1 nsharpe 05/15/2020 00:15:02 05/15/2020 00:15:03 00:00:01
2 djohnson 05/15/2020 00:15:02 05/15/2020 00:15:02 00:00:00
2 myuan 05/15/2020 00:15:06 05/16/2020 00:15:02 23:59:56

なんか思ってたのと違う。
eventgenあたりで作ってるのかな、やっぱり

解説

  • reverseしてからのstreamstatsでのセッション作りは定番。
  • 一塊にしたい状況をcurrent=fで数えてあげるとちょうどいい。
  • convertによるepoch時間の変換は、evalと違って列挙できるのがありがたい。なお、表示のしかたを変えるのはtimeformat=

まとめ

sourcetype=secureだと、

  • 不正ログインしたIPアドレスの数は?
  • その際使用したアカウントの種類は?
  • その中で正規のアカウントと思われる数は?

と言ったBOTSv1でも出てきたことを練習するにはいいと思いました。

_timeがもっとしっかりしていれば、timechartで凝ったことしようと思いましたが、次で頑張ろうと思います。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?