Power Automate(クラウド)とPower Automate for Desktop(PAD)を連携させ、Power Automateから入力したデータをPAD経由で SOAR の APIに渡してみた

以前、Power Automate(クラウド)から Power Automate for Desktop にてあらかじめ作成しておいた XSOAR のインシデント作成タスクを呼び出したことがありました。

しかしその時は、Power Automate(クラウド)から何もデータを渡していなかったので今回は、Power Automate(クラウド)から入力されたデータを基にXSOAR のインシデントを作成する形でタスクを呼び出してみました。

1.Power Automate for Desktopで変数などの準備

Power Automate(クラウド)からデータを受け取る場合、Power Automate for Desktop側であらかじめ入出力変数を設定しておかなければなりません。

そこで今回は以下の2つを入力用変数として作成しました。
・Detail
・Date

作成の方法ですが、Power Automate for Desktopのフロー作成画面に入ると右ペインに「入出力変数」の設定があるので、そこから「入力」を選択します。

Power Automate for Desktop – 入出力変数設定1

すると以下のようなポップアップが表示されるので、画面に表示されている項目を入力していきます。(変数名は「Detail」を設定)

Power Automate for Desktop – 入出力変数設定2

なお、これらの項目のうち、「外部名」に設定した値が、後からPower Automate(クラウド)で設定する際に設定画面に表示されます。

同様に「Date」という変数も設定したのが以下の状態です。

Power Automate for Desktop – 入出力変数設定3

この後、実際にXSOARのAPIを実行している設定(上記画面の「Webサービスを呼び出します」)を開いて、先ほど作成した変数を下図の赤線の通り設定します。

Power Automate for Desktop -「Webサービスを呼び出します」

なお、XSOAR上では、”test %Date%”がインシデント名、”Detail”がそのインシデントを開いた時の Detail の設定項目になります。

2.Power Automate(クラウド)でフロー作成

1.のPADの設定を行いセーブしたら(!)、Power Automate(クラウド)でのフローの作成に入ります。

フロー作成画面で”Desktop”で検索をかけると「Run a flow build with Power Automate for desktop」というアクションがあるので、それを選択します。

Power Automate(クラウド)1

そしてその設定画面を開くと、下図のとおり一番上に「Desktop Flow」という項目があるので、その下のプルダウンから、先ほどPAD上で作成したフロー名(ここでは「XSOAR連携 – データ受信」)を選択します。

すると、その下にある「Advanced parameters」のプルダウンを開いた際に、先ほどPADで設定した変数(外部名)が表示されるので、それぞれチェックボックスで選択します。

Power Automate(クラウド)2

そして、それそれの変数に対して渡したいデータをテキストフィールドに書き込んでいきます。

Power Automate(クラウド)3

ここでは「XSOAR Detail」には固定文字の”TEST”そ、「XSOAR Date」にはその時の日付を設定しています。

3.Power Automate(クラウド)のフローを実行

これで準備が整ったので、先ほど作成したPower Automate(クラウド)のフローを実行します。

Power Automate(クラウド)フロー実行1

どうやらうまくいったようなので、念のため、Power Automate(クラウド)のフロー実行結果を確認してみると、ちゃんと変数が設定されて正常終了しているようでした。

Power Automate(クラウド)フロー実行2

4.XSOAR側の処理状況を確認

その後、XSOAR側で正常にインシデントが登録されているか確認してみました。

するとインシデント名のところには赤線の通り、%Date%で渡した今日の日付の入ったものが登録されていました。

XSOARコンソール1

また、そのインシデントの中を見てみると、Detail の部分には%Detail%で渡した”TEST”という文字が登録されていることも確認できました。

XSOARコンソール2

Power Automate を無料で試す方法があると聞いたので申請してみた

会社で Teams と Power Automate を利用しているのですが、自宅でもこれらを使っていろいろ自動化のテストしてみたいと思っていました。

そこでインターネットで情報を漁っていたところ、Microsoft 365 開発者プログラムに参加すれば無料で使えると聞いたので、以下のサイトから申請してみました。

1.Microsoft 365 開発者プログラムに参加し、onmicrosoft.comのアカウントを取得

Microsoft 365 開発者プログラム
https://developer.microsoft.com/en-us/microsoft-365/dev-program
Microsoft 365 Developer program top

上記画面の「Join now」から登録処理を進めます。

すると、以下の画面が表示され、左上の方に「xxx@xxx.onmicrosoft.com」というアカウントが発行されていることが確認できました。

Microsoft 365 Developer program

このonmicrosoft.comのアカウントを使うと、以下の Power Apps を無料で利用申請することができるようなります。

2.Power Appsを無料で開始する

Power Apps 無料で開始する
https://powerapps.microsoft.com/ja-jp/landing/developer-plan/

上記サイトにアクセスすると「無料で開始する」というボタンがあるので、それをクリックすると以下の画面が表示されます。

Power Apps 開発者向けプラン(Microsoft)

その後、処理をすすめると、以下の画面が表示されます。

Power Apps画面(Microsoft)

この画面の左ペインに表示されている「Power Platform」を選択することにより、 Power Automateや Teams など利用可能になります。

Power Automate を利用して Teamsのチャネルに登録されたメッセージをSlackに送信してみた

Power Automate を利用して、Teams の特定のチャンネルに投稿されたメッセージを Slack に送信する処理を作成してみました。

なお、Power Automate については、Microsoft 365 Developer Program を使ってテストを行なっています。このあたりの話は別のブログで記載したいと思います。

動作前提

Teams にて「インシデント対応」というチームの作り、その中の「一般」チャネルに何かメッセージが入力されたらそれを検知し、Slackのその内容を送信する想定です。

Microsoft Teams

フロー作成

Power Automateにてフローを作成します。全体のフローは以下の通り6ステップとなっています。

Power Automate フロー全体

単純に Teamsのメッセージを受け取って Slack に投げるだけなのでもっと少ないステップになりそうですが、HTMLをプレーンテキストに変換し、配列を文字列にし、さらに不要なカッコや改行を取り除いて Slackに送信しているのでこうなりました。

このあたりの処理は以外と難しかったので、あとでこのブログに記録の為に追記しておこうと思います。

以下、細かな処理を記載しておきます。(2023.12.3)

「変数を初期化する Teamsメッセージ」では、手前のタスクでプレーンテキスト化した Teamsのメッセージを変数 teams_array に設定しています。
なおこのときプレーンテキストが(なぜか)配列の形”[“と”]”に囲まれているので、Typeとしては Arrayとしています。

Power Automate タスク詳細1

「変数を配列から文字列にする」では replace()関数をつかって、先ほどの teams_array の中身のTypeをArray から Stringの形にし、変数 teams_string に設定しています。

Power Automate タスク詳細2

「変数を初期化する 改行コード」では、次のタスクで利用する為に改行コード”\n”を LFcode という変数に設定しています。

Power Automate タスク詳細3

最後に「メッセージの投稿」では、変数 teams_string の中の改行コード”\n”を replace()関数を使用し(空白に)置き換えています。

Power Automate タスク詳細4

動作結果

以下が Slack の general チャンネルに Power Automateからメッセージを送信した結果です。

画面上の最初の方は Teams のメッセージを受け取ってそのまま Slackに投げたので HTMLとなっていますが、最後の方ではプレーンテキスト化し、”[“や改行”¥n”を取り除いてシンプルに URLだけが表示されるようになっています。

Slack – general

Power Automate から SOAR のWeb APIをたたいてみた

XSOARには Web APIが用意されていて、コマンドプロンプトから以下のようなコマンドを実施すると、”palybookId”で指定したプレイブックを起動したり、”details”で指定した情報をインシデント情報として記録できます。(プレイブックのインプットデータとしても活用可能)

% curl -kv 'https://XX.XXX.XX.X:XXXX/incident' -X POST -H 'Authorization: XXXXXXXXXX' -H 'Accept: application/json' -H 'Content-Type: application/json,application/xml' -d '{"name": "test 20231201","type": "Access","owner": "admin","details": "http://k2-ornata.com/%22,%22playbookId": "59daa471-0cc5-495a-8567-1a252fd020c6"}'

この情報を元に Power Automate for Desktopの「Webサービスを呼び出します」を使って、同じ様に XSOAR にアクセスしてみました。

1.まずはChatGPTに相談

curlのコマンド情報からから Webリスクエストを作成してくれるサイトはいくつかあるようですが、どれも今一つだったので、そういえばと思い ChatGPT に相談してみました。(別のコマンドを相談した時のものですが。)

ChatGPT

上記は少し違うコマンドについて相談したときのものですが、かなりいい感じで答えてくれていることがわかります。

2.Power Automateを設定

そこで 上記の ChatGPT の回答も踏まえながら、以下の通り各パラメータを設定してみました。

Power Automate – Webサービスを呼び出します

3.レスポンスエラーへの対処(400, 403)

しかしながらすんなりとはいかず、SOARからの以下のようなレスポンスエラーが頻発しました。

{"id":"bad_request","status":400,"title":"Bad request","detail":"Request body is not well-formed. It must be JSON.","error":"unexpected EOF","encrypted":false,"multires":null}

こういったエラーが XSOAR から返ってくるようであれば、以下の3点を見直してみる必要があります。

<正しくWeb APIにアクセスするポイント>
1.Authorization: に認証情報が正しく設定されているか?
2.「要求本文」に記載したデータが正しく JSON フォーマットで描かれているか?
3.「詳細」設定にて以下の図の通り「要求本文をエンコードします」がOFFになっているか?

Power Automate – Webサービスを呼び出します(詳細)

特に2.のJSONフォーマットはかなりシビアな感じなので、念入りに確認する必要があります。たとえば以下のように同じ”でくくっているように見えて実は”になっていたりするので要注意です。

"59daa471-0cc5-495a-8567-1a252fd020c6”

これらを修正することで、ようやく正常に XSOAR にアクセスすることができました。

CAMBLY で AI とのレッスンが無料で受けられると聞いてアカウント登録してみた

最近、Youtube や ブログなどで CAMBLY の AI との英語レッスンがすごい!との噂を聞きました。

しかもその AI レッスンは、CAMBLY のアカウントを作成するだけで無料で使えるとのことなので、試しにアカウントを作成しました。その時の記録をここに残しておきます。

結論としては、アカウントを登録する際にクレジットカードの情報を入れる必要もなく、手軽に使えることがわかりました。

以下にアカウント作成時の手順を記載しておきます。

CAMBLY のアカウント作成手順

まず以下のサイトにアクセスします。

CAMBLY
https://www.cambly.com/

するとCAMBLYのトップページが表示されますので、右上の「登録する」ボタンを押します。

CAMBLY トップページ

1.アカウントを登録する

アカウントの登録方法を選択する画面が表示されますので、好きな方法をアカウント登録を行います。

私は、お試しでアカウントを作成してみたいだけなので、右下のメールのアイコンを選択しました。

CAMBLY登録画面1

次にメールアドレスをパスワードを選択します。

CAMBLY登録画面2

最後に名前(ニックネーム)を登録します。

CAMBLY登録画面3

2.個人の情報を入力

ここから2ページに渡り、個人の情報をいれていきます。

まずは自分の英語力についてです。

CAMBLYパーソナライズ画面1

次に学習目標などを聞いてきます。

CAMBLYパーソナライズ画面2

3.勧誘ページをスキップ

最後に勧誘の画面が表示されます。

ここは興味がなければどんどんスキップしていきましょう。

CAMBLY勧誘画面1

次も勧誘ですのでスキップします。

CAMBLY勧誘画面2

4.CAMBLY ミニレッスンを選択

ここまでログインが完了したので、画面左下の「Camblyミニレッスン」を選択します。

CAMBLYログイン後トップ画面

するとAIとのレッスン画面に無事アクセスすることができました。

CAMBLY AI レッスン画面

こらから実際に使ってみたいと思います。

Virus Totalのsearch APIを使ってURLのカテゴリ情報を検索してみた

Virus TotalのWebサイトで URL を調査すると、こんな感じで「Details」タブにそのURLのカテゴリ情報が表示されます。

Virus Totalサイト

この情報を、Virus Totalから提供されている API を使って取得できないかと思い調べていたところ、以下のAPIで取得できることがわかりました。

api/v3/search?query=

curl --request GET \
  --url 'https://www.virustotal.com/api/v3/search?query=<検索したいURL>' \
  --header 'x-apikey: <自分のAPIキー>'

試しに1つこのAPIを使ってURLを調べてみたところ、実行結果は以下の通りとなりました。

結果の最初の方にCluster25からのレポートが記載されており、MIRAI のボットネットで利用されていることがわかります。

Virus Total – search API 実行結果1

また結果の最後の方を見ると、Sophosなど各社がこのURLのカテゴリをどう判定しているかを確認することが可能です。

Virus Total – search API実行結果2

このAPIを使えば、セキュリティ調査の効率化につながりそうです。

SOARのVirus Totalコマンドで通信先のカテゴリが取得できるか確認してみた

XSOARに提供されている Virus Totalのコマンドをつかって通信先のカテゴリを調べるには以下のコマンドを使えばいいことがわかりました。

vt-search コマンド

このコマンドはPlaygroundにて以下のようにコマンドを実行します。

!vt-search query=<調査したいURL>

その結果、下図のようにカテゴリを取得することができました。

XSOAR – Playground

今回のURLについては、
・Forcepoint ThreatSeeker
・Sophos
・Xcitium
の3社からの報告が上がっているようですが、個人的にいくつかURLを調べてみたところ、Sophos が結構いろいろなURLに対して報告を上げているような気がします。

iMac の純正マウスがある日突然つながらなくなったので、マウスの裏にあるスイッチをオフ・オンしたら再接続できた件

ある日突然、iMac で使っていた純正マウスが Bluetoothで接続されなくなりました。

しばらくは原因がわからず、有線のマウスで対応していましたが、そのあとマウスの裏にスイッチ(下図の赤枠部分)があることに気がつき、一度そのスイッチをオフ・オンしたところ無事に再接続されました。

Mac純正マウス

なお、上記のオフ・オンのタイミングで、Macの「システム環境設定」にある「マウス」の設定画面に「System Administrator’s Mouse」が表示され、接続済みとなりました。

iMac マウス設定画面

マウスのオフ・オンでもダメな場合は、上記の設定を確認してみることをおすすめします。

Open Interpreter を Macにインストールしようとしたらエラーがでた話

最近 Open Interpreterの記事をいろいろ見つけたので自分のMacにもインストールしようとしてみたところ、以下のようなエラーが出ました。

エラーが大量発生

% pip install open-interpreter
ERROR: Ignored the following versions that require a different python version: 0.0.1 Requires-Python >=3.10,<4.0; 0.0.2 Requires-Python >=3.10,<4.0; 0.0.21 Requires-Python >=3.10,<4.0; 0.0.22 Requires-Python >=3.10,<4.0; 0.0.221 ・・・
・・・
Requires-Python >=3.10,<4.0; 0.1.4 Requires-Python >=3.10,<4.0
ERROR: Could not find a version that satisfies the requirement open-interpreter (from versions: none)
ERROR: No matching distribution found for open-interpreter

Pythonのバージョンを3.10.0にアップして成功

結論としては、どうやら Macの Pythonのバージョンが Python 3.8.3 のままになっていたのが原因のようでした。

以下の要領で 3.10.0 にアップしたところ、Open Interpreterを正常にインストールすることができました。

% python --version
Python 3.8.3
% pyenv install -list
Available versions:
・・・
  3.10.0
  3.10-dev
  3.11-dev
・・・
  stackless-3.7.5
% pyenv install 3.10.0
python-build: use openssl@1.1 from homebrew
・・・
Installed Python-3.10.0 to /・・・/.pyenv/versions/3.10.0
% pyenv local 3.10.0
% Python -V
Python 3.10.0
% pip install open-interpreter
Collecting open-interpreter
  Downloading open_interpreter-0.1.4-py3-none-any.whl (35 kB)
・・・
WARNING: You are using pip version 21.2.3; however, version 23.2.1 is available.
You should consider upgrading via the '/Users/katsuhiro.kurita/.pyenv/versions/3.10.0/bin/python3.10 -m pip install --upgrade pip' command.

Marmaid でシーケンス図を作成してみた

シーケンス図とか最初はPower Pointで作っていましたが、条件分岐とか複雑なものをつくり始めたらつらくなってきたので、Marmaidというツールを試しに使ってみました。

1.mermaid live editorにアクセス

mermaid live editorはオンラインにてフリーで利用でき、アカウントも作成する必要がないので、誰でも自由に Markdown形式の記述からシーケンス図を作成できてしまいます。

mermaid live editor
https://mermaid-js.github.io/mermaid-live-editor/edit

2.Markdown形式でシーケンスを作成

Markdown形式ってなんだか難しそうに聞こえますが、意外と簡単です。

初めて作成した私でも下記の記述程度であれば、見よう見までで30分〜1時間程度でかけてしまいました。

sequenceDiagram ← シーケンズ図であることを宣言
    Ar->>Xs: data ← ArからXsにメッセージ(data)を渡す場合はこう書く
    Note right of Ar: IoC etc ← 黄色い付箋にノートが書ける
    Xs->>Xs: data check
    alt C2 ← 条件分岐を記載
        Xs ->> Xs: transparent check;
        alt blocked
            Xs->>Xs: write down
        else passed
            Xs->>So: investigation request
        end
    else phishing
        Xs ->> Xs: transparent check
        alt blocked
            Xs->>Xs: write down
        else passed
            Xs->>So: investigation request
        end
    else others
        Xs ->> Vi: evaluation check
        Vi ->> Xs: result
        Xs ->> Xs: result check
        alt benign
            Xs ->> Xs: write down
        else malignant
            Xs ->> So: investigation request
        end
    end
    Xs ->> Ar:investigation result
    So ->> So:investiogate
    So ->> Cs:investigation result
    So ->> Ar:investigation result
    Cs ->> Cs:traffic number check
    alt over N
        Cs ->> Si: white regist
    else under N
        Cs ->> Cs: block request
    end
    Cs ->> Ar: result

3.できあがったシーケンス図を確認

mermaid live editorの左ペインで、2.に掲載したMarkdown形式のシーケンスを書いていると、右ペインにリアルタイムでシーケンス図が描かれます。

これはおもった以上に便利ですね。

mermaid live editor

いきなりPower Point でこのシーケンス図を描こうとするとかなり難儀ですが、一旦、mermaid live editorで作成しておいて、後で Power Point で清書するという使い方もありかと思います。

Power Point 形式でデータ出力してくれるとありがたいですが。。。。

参考サイト:

・エクセルでシーケンス図書くのやめませんか?mermaidが便利ですよ(Qiita)
https://qiita.com/naoki114/items/f46082e488fcb1562662

・markdownでシーケンス図を書こう
https://qiita.com/konitech913/items/90f91687cfe7ece50020

サンプル2:

sequenceDiagram
    Ar->>Xs: data
    Note right of Ar: IoC etc
    alt C2
        Xs->>Xs: write down
    else phishing
        Xs ->> Xs: transparent check
        Xs->>Xs: write down
    else others
        Xs ->> Vi: evaluation check
        Vi ->> Xs: result
        Xs ->> Xs: result check
    end
    Xs ->> So:investigation request
    Xs ->> Ar:investigation result
    So ->> So:investiogate
    So ->> Cs:investigation result
    So ->> Ar:investigation result
    Cs ->> Cs:remediation dicision
    alt benign
        Cs ->> Cs: block request
    else malignant
        Cs ->> So: quarantine request
        Cs ->> As: quarantine report
        So ->> So: quarantine execute
        So ->> Ci: quarantine fin report
        As ->> Cs: status report
    end
    Cs ->> Ar: result