SplunkのSPLで検索対象とするログの時間帯を指定する

Splunkでログを検索するときに、検索フィールドの横にある選択リスト?から対象となるログの時間帯を選ぶことが多いですが、SPLで直接指定する方法もあると思い調べてみました。

以下のように記載すると、10年前から1年前までのログを検索してくれるようです。

index=botsv1 earliest=-10y@y latest=-1y@y

なお、以下のように記述すると、統計的に20件以上発生しているsrc_ip をトップから表示してくれます。

index=botsv1 earliest=-10y@y latest=-1y@y| top limit=20 src_ip

また table を利用すると項目を絞って(以下の例の場合、_time, app, dest_ipのみ)ログを表示してくれます。

index=botsv1 earliest=-10y@y latest=-1y@y
| table _time, app, dest_ip

Power Automate で Splunkの操作を自動化してみた

Power Automate のブラウザ操作機能で実際に Splunk のWeb画面をどこまで操作できるか試してみました。

試してみる前は Power Automateのレコーダー機能で何も考えずにできてしまうのではないかと楽観視していましたが、そうすんなりいかないことがわかりました。

ただし、コツさえつかめば比較的簡単に解決できるようなので、Power Automateはやはり自動化しやすいなという思いを新たに持ちました。

1.ブラウザ操作をレコーダーで記録

まずざっとPower AutomateのレコーダーでSplunkの操作を記録した結果は以下の通りです。

Power Automate – レコーダー記録直後

この中からまずは不要そうなアクションを削除します。具体的には赤枠でかこった部分が不要と思われる部分です。

2.とりあえず動かしてみる

不要そうなアクションを削除した後とりあえず動かしてみると、まず以下の赤枠で囲われた部分で処理がエラーになりました。

Power Automete – Error 1

3.エラー部分のUI要素を編集する

具体的には、ログの検索時間を「最新24時間」から「全時間」変えるところで失敗しています。

Splunk 自動化失敗箇所1

そこで、Power Automateの右端のアイコンメニューの内、上から2つ目の「UI要素」を選択し、「Anchor ‘全時間’」となっている部分を確認することにします。

Power Automate – UI要素

「Anchor ‘全時間’」部分から右クリックでメニューを表示させ、そこから「編集」を選びます。

Power Automate – UI要素 – 編集

すると以下の通り複数の要素が選択されている状態になっていますので、とりあえず一番したの「Anchor ‘全時間’」だけ選択された状態にします。

Power Automate – UI要素2

結果として下部の「セレクターをプレビューする」が「a[Text=”全時間”]」とシンプルな形になります。

Power Automate – UI要素3

これで保存すると、処理を流したときにうまく「全時間」を選択してくれるようになりました。

4.再度動かしてみる

そこで再度動かしてみましたが、今度はテキストフィールドを選択するところでエラーになりました。

Power Automate – Error 2

おそらくDiv の後ろの “id-“が動的なUI要素として生成されているからではないかと思われます。

5.エラー部分の動的なUI要素に対処する

具外的にはSplunk画面の以下の赤枠部分のテキストフィールド選択が失敗しています。

Splunk 自動化失敗箇所2

そこで、エラーが出ていたアクションの編集画面を右クリックで表示し、以下の画面のようにUI要素として「Text area ‘サーチ’」を選択します。

Power Automate – UI要素の変更

こうすることで以下のとおりアクションの表示が変わりますが、よく見てみると「Test area ‘サーチ’に”を入力する」となっており、テキストフィールドに入力したはずのSPL文が入っていません。

Power Automate – 入出力変数1

そこで右上の赤枠の通り、「入出力変数」から「入力」を選択し新しい入出力変数としてSPL文を設定しておきます。

Power Automate- 入出力変数2

この入出力変数(NewInput)を設定してくことで、下図の通り先ほどのアクションの編集画面から入力値として NewInput を選択できるようになります。

Power Automate- 入出力変数3

これで、NewInput の値を変えるだけで、いろいろなSPLを検索することができるようになりますね。

Power Automate – 完成

6.自動化成功

最終的に最後まで自動化した結果が以下の通りです。

Splunk自動化結果

SPL で表示した結果をCSV でローカルに保存するところまで自動化できました。

AbuseIPDBにアクセスするPythonプログラムを試してみた

ある理由から AbuseIPDB にIPアドレスを投げてその評価結果を受け取るPythonプログラムを作成しようと思いググったところ、以下のYoutube動画を見つけました。

AbuseIPDB API Python Script(Mostafa Yahia)

そこで真似して作成してみることにしました。

なお、上記動画で紹介しているPythonプログラムは以下のGitHubで公開されています。

https://github.com/Mostafayahia-hunter/AbuseIPDB-API-Python

だだし、最近、AbuseIPDBからのレスポンスが変わったのか、一部の箇所でエラーがでたので、csv_columnsの定義の部分を以下の通り書き換えました。(’isTor’を追加しました。)

csv_columns = ['ipAddress','isPublic','ipVersion','isWhitelisted','abuseConfidenceScore','countryCode','usageType','isp','domain','hostnames','isTor','totalReports','numDistinctUsers','lastReportedAt']

また、Pythonプログラム実行時に要求される IPリストとして入力するcsvファイルとしては、以下のような内容を用意しました。

IP,
88.29.56.3,
1.158.10.11,
161.35.146.242,
177.84.141.183

そしてコマンドプロンプト上で実行した結果がこちらです。

Python実行画面

実行するとAbuseIP_results.csvというファイルが出来上がっており、それを開いてみた結果は以下の通りです。

Python実行結果

プログラムをいろいろいじってみて CSVライブラリの使い方あたりがとても勉強になりました。

Power AutomateからVirus Total にアクセスするPythonを呼び出して入力したサイトの安全性を確認してみた

最近、Power Automateをいろいろといじり始めていますが、今回は、Power Automateから Virus TotalにアクセスするPythonプログラムを呼び出してみましたので、そのときの設定を記録しておきます。

なお、処理の流れは以下の通りです。

1.入出力変数(NewInput)にVirus Totalで評価するURLを設定
2.NewInputの内容をinput.txtに書き込み
3.Virus TotalにアクセスするPythonプログラムを呼び出し
  (input: input.txt, output:output.txt, scan_result.json)
4.Virus Totalでの評価結果をoutput.txtファイル等から読み込み
5.Gmailをつかって評価結果をメール送信

Power Automate全体フロー

以下、フローを作成していて苦労した点を少し説明していきます。

2.NewInputの内容をinput.txtに書き込み

Power Automateの機能メニューから「テキストをファイルに書き込む」を選択した際に、エンコードがデフォルトでUTF-8になっていましたが、それだとなぜが Pythonで読み込んだときに半角が全角になってしましいました。

そこでエンコードの設定を「UTF-8」から「システムの規定値」に変えたところ、半角のままpythonで処理することができました。

Power automate – テキストをファイルに書き込む

3.Virus TotalにアクセスするPythonプログラムを呼び出し

正直このPythonプログラムは ChatGPTにお願いして大部分を作成してもらいました。

手直ししたのは、「json_response[‘positives’]」を「json_response[“positives”]」を書き換えたくらいです。

あとはそのまま動いてくれました。

import requests
import json

# VirusTotalのAPIキーを設定します。
api_key = 'virus totalのapiキーをここに設定'

# VirusTotalのURLスキャンAPIエンドポイントを設定します。
url_scan_endpoint = 'https://www.virustotal.com/vtapi/v2/url/scan'

# ファイルを読み込みモードで開きます。
with open('c:\\tmp\\input.txt', 'r') as file:

# ファイルから文字列を読み込み、調査したいURLを設定します。
url_to_check = file.read()
print(url_to_check)

# APIリクエストのパラメータを設定します。
params = {'apikey': api_key, 'url': url_to_check}

# URLスキャンAPIにリクエストを送信します。
response = requests.post(url_scan_endpoint, data=params)

# レスポンスをJSON形式で取得します。
json_response = response.json()

# スキャンIDを取得します。
scan_id = json_response["scan_id"]

# VirusTotalのURLレポートAPIエンドポイントを設定します。
url_report_endpoint = 'https://www.virustotal.com/vtapi/v2/url/report'

# APIリクエストのパラメータを設定します。
params = {'apikey': api_key, 'resource': scan_id}

# URLレポートAPIにリクエストを送信します。
response = requests.get(url_report_endpoint, params=params)

# レスポンスをJSON形式で取得します。
json_response = response.json()

# URLが安全かどうかを判断します。
if json_response["positives"] > 0:
    text_to_write = 'The URL is not safe.'
else:
    text_to_write = 'The URL is safe.'

# ファイルを書き込みモードで開きます。
with open('output.txt', 'w') as file:
    # 文字列をファイルに書き出します。
    file.write(text_to_write)

# レスポンスをファイルに保存します。
with open('scan_result.json', 'w') as outfile:
    json.dump(json_response, outfile)

5.Gmailをつかって評価結果をメール送信

ここでは、Gmailサーバにアクセスする為のポート番号の設定や、2段階認証していたのでアプリパスワードの設定に少してこずりました。

2段階認証設定をしているGoogleアカウントにプログラムからアクセスするには、アプリパスワードを使いましょう

Power Automateから2段階認証を行なっているGmailのメールサーバ経由でメールを送信する場合、Gmail で使っている通常のパスワードではなく、Googleからアプリパスワードを取得する必要があります。

ここでは、そのアプリパスワードの取得方法を記載しています。

1.Googleアカウント画面を表示する

Googleのサイト(https://www.google.com/)にアクセスすると、右上に自分のアイコンがありますので、それをクリックします。

クリックすると「Googleアカウントを管理する」というボタンが表示されるので、それをさらにクリックします。

googleサイト

すると、「Google アカウント」という画面が表示されますので、その画面の左メニューから「Security」をクリックします。

google account

セキュリティ画面に移ると、2段階認証の設定項目がありますので、それをクリックします。

google security

2段階認証の画面に移ったら、ページを一番下までスクロールさせると「アプリ パスワード」の設定項目がありますので、それを再度クリックします。

Google – 2Step Verification

アプリ パスワードの画面の下側でパスワードを利用する「アプリ」と「デバイス」を選択し、「生成」ボタンを押します。

Google – Application password

するとアプリ パスワードが生成されますので、これをGmailにアクセスさせるアプリに設定します。

Google – Application Password

NCロードスターの自動車税をペイジーを使ってATMから払ってみた

毎年のことですが5月になると自動車税を払う必要があります。

今年もその支払い通知がきましたが、その税額は45,400円となっております。

私のロードスターは今年多分12年目で、ガソリン車は13年目から税金があがるらしいので、来年は15%増しになっている可能性があります。

2023.5.29 追記
今年も45,400円だったので、すでに昨年、私のロードスターは13年目に突入していたと思われます。

なお、その税金を支払うときにコンビニで支払ってしまうと上記の金額+手数料がとられてしまいますよね。(たぶん)

そこで他の方法を調べてみたところ、ペイジーで支払えばATMから支払っても手数料が引かれず、かつ、いまならペイジーの方でキャンペーンをやっており、1万円が当たる可能性がある、ということでした。

ペイジーのキャンペーンサイト

そこで今年は、ペイジーをつかって支払ってみることにしました。

自動車税をペイジーで払ってよいか確認

ペイジーが利用できる自治体は限られる

とはいえ、どこの都道府県でもペイジーで支払いができるわけではないようですので、気をつけてください。

幸い、私が住んでいる神奈川県ではペイジーで支払いが可能なようです。

なお、ペイジーで支払える場合には支払い用紙にペイジーマークがプリントされているようですので、それを確認してみてください。

車検が近い場合は納税証明書が出ないのでこまるかも

また車検が間近にせまっている人の場合は、もしかしたらコンビニで払ったほうがいいかもしれません。

ペイジーだと納税証明書がもらえず、システム連携も10日くらいかかるらしいので車検の時に困るかもしれません。

銀行のATMで支払い

ペイジーで支払うことを決めたら、納付書を持ってATMに行きます。(PCからでもできるらしいですが。)

メニューから「税金・各種料金の払込」を選択

私は三井住友銀行のATMから支払いましたが、その場合、以下のメニュー画面から「税金・各種料金の払込」を選択します。(その横にペイジーのマークがありますね。)

三井住友銀行のATMの場合

納付書を見ながら情報入力

その後は自分のキャッシュカードを入れて、画面の指示に従い、以下の情報を納付書を見ながら入力します。

・収納機関番号
・納付番号
・確認番号
・納付区分

これらを入れ終わると、画面に自動的に納付金額や納付先の情報が表示されるので「確認」ボタンを押して払込は終了となります。

多少、数字をたくさん入れる必要があるのでめんどうかもしれませんが、手数料ただならしかたないですねー。

ご利用明細はしばらく保管

なお、払込が終わるとATMのご利用明細がでてきますので、しばらくはそれを保管しておいたほうがよさそうですね。(コンビニで払ったときのように領収日付印は教えてもらえないので。

以上で自動車税の払込は終了です。ペイジーのキャンペーン当たるといいなぁ。

SOARからChatGPTにアクセスするインテグレーションをYoutubeを見ながら作成してみた

すでに XSOAR には ChatGPT にアクセスする為のインテグレーションがありますが、Youtube をみるとそれを自作する動画があったので、勉強の為、真似して作成してみました。

ただし、Youtube の動画のPythonをそのまま利用してもエラーがでてしまったので、ChatGPT と相談しながら修正しました。

それ以外の詳しい手順は以下のYoutubeをご覧ください。

XSOAR Integration Creation for CHATGPT to Answer Questions – PurpleXsec

1.BYOIボタンを押す

まず、XSOAR にログインし、左下の settingsメニューから Integrations – instances に進みます。

すると右上に「+BYOI」ボタンが表示されるので、それを押します。

2.Integration Settingsを設定する

「+BYOI」ボタンを押すと、右側に Integration Settings が表示されるので、その中の、

・BASIC
・Parameters
・Commands

などの設定を Youtubeを見ながら実施していきます。

3.Pythonコードをサイトからコピペする

Youtube の中に出てくるPythonコードは以下のGitHubで公開されていますので、これをコピーし、左側にデフォルトで提供されるPythonコードと置き換えます。

https://github.com/vidura-supun/XSOAR-CHATGPT-Integration/blob/main/ChatGPT.py

4.Pythonコードを少し修正する

GitHubからコピーしてきたPythonコードをそのまま利用すると後述の Integrationの接続テストの際に、以下のエラーが発生してしまいます。

Authorization Error: make sure API Key is correctly set (85)

どうやら ChatGPT APIにアクセスするための認証ヘッダーの定義が Youtube 公開当時から変わった?ようなので、22行目を以下の通り書き換えます。

変更前
self._headers = {'Authorization': self.api_key, 'Content-Type': 'application/json'}
変更後
self._headers = {'Authorization': f'Bearer {self.api_key}' , 'Content-Type': 'application/json'}

あとで調べたのですが、ChatGPT ではAuthorizationヘッダを用いた Bearer認証というものを利用しているみたいですね。(BASIC認証の親戚みたいな感じですね。)

5.テスト接続する

4.の修正後、Integration設定画面から「Test」ボタンを押すと、以下のとおり正常に接続することができました。

XSOAR – Integration設定画面

この後問題なく「user_question」コマンドを実行することもできました。

幸せを呼ぶニワトリの青い卵「アローカナのたまご」を食べてみた

K2-ornataのkuroです。

先日、千葉にある道の駅「保田小学校」へ立ち寄りました。
そこで珍しい青緑色の卵を見つけました。

幸せを呼ぶ青い卵 「アローカナ」のたまご

「アローカナ」という南米チリ原産の鶏で、珍しい青い色合いの卵を産むことから、南米では「幸せを呼ぶニワトリ」ともいわれているそうです。外見は日本のニワトリにはない大きな耳羽があり、尾がなくずんぐりした体型をしています。また普通の卵よりもレシチンという動脈硬化や認知症の予防に効果がある成分が多く含まれていて栄養価が高いとのこと。

さっそく翌朝、目玉焼きにしてみました。
・・・中身は普通の卵でした。味も普通で、美味しくいただきました。
でも期待しすぎてしまったせいでなんとなくがっかり。

ですが、割った後の殻に魅了されてしまいました。

アローカナの卵の殻


外側の青緑色とのコントラストが素敵で、不思議な雰囲気を漂わせています。
とても気に入ってしまい、いまだに捨てられず飾ってます。

味は普通でしたが、殻を目当てにまた買ってしまいそうです。

Power AutomateからChatGPTが生成したpythonを実行させる

ChatGPT でpythonを自動生成してくれるので、それをPower Automateで自動的に動かせないかと思い、試してみました。

もしかしたらこれを一歩進めて、Power Automateから ChatGPT を呼び出してpython を自動生成させ、それをさらにPower Automateから自動実行させるみたいなことができるかもしれませんねー。

1.Power Automate Desktop(PAD)を起動

Windows 10 にインストールしたPower Automate Desktopを起動します。

Power Automate Desktop画面

2.PADでフローの作成開始

「+新しいフロー」を選択し、フロー名を設定後、「作成」を選択します。

Power Automate Desktop画面

3.ChatGPT で生成したPythonをファイルに保存

ChatGPT で生成したPythonをコピペしてファイルに保存しておきます。

保存したPythonプログラムを実行させるには、Windows 10に Pythonの実行環境とPythonプログラムの中で利用しているライブラリがインストールされている必要があります。

4.アプリケーションの実行を選択

ファイルに保存されているPythonプログラム(*.py)を実行する為、
左ペインの「アクション」から「システム」-「アプリケーションの実行」
を選択します。

Power Automate Desktop画面

5.アプリケーションとしてpythonを指定

「アプリケーションの実行」設定画面にて以下の通り設定します。

アプリケーションパス:python
コマンドライン引数:pythonプログラム名
作業フォルダー:pythonプログラム名を置いているディレクトリ

Power Automate Desktop画面

設定後、「保存」ボタンを押すと以下の画面となります。

Power Automate Desktop画面

6.Pythonの実行結果をメモ帳で表示

pythonの実行結果は作業フォルダーにファイルとして保存されるようになっている為、それをメモ帳で表示する処理を以下のとおり追加してみました。

Power Automate Desktop画面

ChatGPTのプラグイン WebPilotで指定したWebページのデータを抜き出してもらった

本日、ChatGPT plus のサブスクリプション契約を行い、Pluginが利用できるようになったので、さっそく WebPilotを使ってみました。

ちなみにChatGPT plusのサブスクリプションを契約したら、必要なPluginを個々にインストールする必要があります。

ChatGPT Plugin Store

なお、以前はPluginの利用は順番待ちだったようですが、現時点では、plus契約と同時に使えるようになっているみたいです。

さっそくWebPilotを試してみる

以下、情報を取得するURLを指定して https で始まる行を全て取得してもらった結果です。

ChatGPT

きれいに依頼したとおりの情報をとってくれました。

うまく依頼すれば、いろいろなサイトからセキュリティのIoC情報を拾ってきてくれそうですが、この場合も結局はスクレイピングしていることになるんでしょうね。