OpenFaas で function を自作する

OpenFaas で function を自作する OpenFaas で function を実装してデプロイしてみる。 OpenFaas のセットアップについてはこちら function をビルドする 下記コマンドで function の実装ができる $ faas-cli new --lang <実装したい言語> <functionの名前> 今回は入力されたドメインの whois 情報を出力する function を Golang で実装してみる。 faas-cli で function を作成すると諸々の設定ファイルや function を実装するためのファイルが生成される。 $ faas-cli new --lang go whois $ ls template whois whois.yml ファイルの中身を確認する whois.yml ファイルには実装する function に関する設定が書かれている。 provider: name: faas gateway: http://127.0.0.1:8080 functions: whois: lang: go handler: ./whois image: whois:latest whois/handler.go ファイルには function の処理が書かれている。 package function import ( "fmt" ) // Handle a serverless request func Handle(req []byte) string { return fmt....

March 26, 2020 · 1 min · 210 words · FAMASoon

OpenFaas をセットアップして function を呼び出す

OpenFaas をセットアップして function を呼び出す AWS lambda を何となく触ってみて、ベンダロックインしない形で同じような機能を実現できないかなと思って色々と調べているとOpenFaasというOSSを見つけた。 AWS lambda とAPI Gatewayをまとめた感じの処理をdockerを使って実現するプロジェクトのようだ。 試しに触ってみたのでその記録を書く。 OpenFaas とは Serverless な処理を Docker や Kubernetes で実装するためのフレームワーク。 公式で日本語化されたチュートリアルがある link OpenFaas のセットアップ 必要なソフトは下記の通り Docker まずは OpenFaas を動かすための swarm をセットアップ $ docker swarm init openfaas-cli のインストール 次に OpenFaas を動かすためのCLIコマンドをインストールする。 ここでインストールするfaas-cliを使用すればCLIからfunctionの新規作成、ビルド、デプロイ等の操作ができるようになる。 mac環境なら以下のコマンドでインストール $ brew install faas-cli Linux とかの環境なら下記のコマンドでインストール $ curl -sL cli.openfaas.com | sudo sh インストールされたか確認 $ faas-cli version OpenFaasのデプロイ GitHub から最新版の OpenFaas をダウンロードして Docker swarm で起動させる。 $ git clone https://github....

March 26, 2020 · 1 min · 148 words · FAMASoon

retdecでHello, worldをデコンパイルする

retdec とは retdec とはセキュリティ企業のavast社が公開しているデコンパイラです。 詳細はavast社のブログを参照(アバストが自社のマシンコード逆コンパイラをオープンソース化) ちゃんとデコンパイルするのか気になったのでインストールから"Hello, world"をデコンパイルする所まで書きます。 実行環境 当記事は下記環境で実行した結果を書いています。 $ uname -a Linux ubuntu 4.15.0-36-generic #39~16.04.1-Ubuntu SMP Tue Sep 25 08:59:23 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609 $ docker -v Docker version 18.06.1-ce, build e68fc7a retdec をインストール dockerを使用してビルドする。 ビルドが終わるまでそこそこ時間がかかるのでコーヒーでも飲んで待っていましょう。 $ git clone https://github.com/avast-tl/retdec $ cd retdec $ docker build -t retdec . デコンパイルしてみる ビルドが終わったらデコンパイルできるか試してみます。 まずはサンプルとして"Hello, world"を書きます。 #include <stdio.h> int main(int argc, char *argv[]){ printf("Hello, world\n"); return 0; } 次にこのコードをコンパイルします。 一点、注意が必要でretdecはx86-64のコードには対応していません。 なので今回はx86でコンパイルします。...

March 26, 2020 · 1 min · 196 words · FAMASoon

Serverless Framework でHello world

概要 Serverless Framework とはサーバレスなアプリケーションを作成、デプロイが簡単にできるツール。 AWS Lambda や Google Cloud Functions といったFaasの実装や、API Gateway の構成変更が容易にできる。 今回はAPI Gateway経由でAWS Lambdaを呼び出してみる。 環境構築 インストール まずは Serverless Frameworkをインストール。 $ npm install serverless -g インストールが完了したらデプロイする際に必要なAWSのユーザ情報を作成する。 IAMユーザの作成・登録 Serverless Framework をAWSで利用するには色々と権限を付与したユーザを用意する必要がある。 公式でセットアップ手順が記載されているのでその通りにユーザを作成する。 AWSのIAM管理コンソールを開く “ユーザを追加"をクリックする 適当にユーザ名を入力する。ここでは"serverless-agent"とする。 “プログラムによるアクセス"にチェックボックスを入れ"次のステップ"をクリック “既存のポリシーを直接アタッチ"から"ポリシーの作成を選択” JSONをクリックし公式で案内しているgistから内容をコピペして上書き ポリシーの確認をクリック 適当にポリシー名を入力する。ここでは"serverless-agent-policy"とする。入力したらポリシーの作成をクリック。 ポリシーが作成されたらユーザを追加の画面に戻ってポリシーをリロード ポリシーから"serverless-agent-policy"を選択して"次のステップ"をクリック 次のステップ: 確認をクリック ユーザの作成をクリック ユーザの作成が成功したらアクセスキーIDとシークレットアクセスキーが表示されるので下記コマンドで Serverless Framework にユーザ情報を登録する。 $ serverless config credentials --provider aws --key <アクセスキーID> --secret <シークレットアクセスキー> これで Serverless Frameworkからサーバレスアプリケーションをデプロイするための準備ができた。 アプリケーションの作成 今回はPython 3.7 でアプリケーション(といっても中身はHello world)を作る。 Serverless Framework はslsという短いコマンドから操作できるので、これを用いてアプリケーションを実装していく。...

March 26, 2020 · 2 min · 235 words · FAMASoon

Vuepress で生成したWebサイトを Now にデプロイしてみる

Vuepress とは Vuepress とは Vue で作られた静的サイトジェネレータのこと。 静的サイトジェネレータといえば有名どころは jekyll Hugo などが挙げられる。 Vueで静的にサイトを作るのなら Nuxt.js でも良さそうにも思えるが、Vuepressは技術文書を静的に管理することに焦点を当て作成している。 why-not Vuepress インストール 下記コマンドでインストールできる。 $ npm install -g vuepress Vuepress を使ってみる Vuepress はREADME.mdを起点にサイトを生成するようになっている。 実際にどのように動作するか下記のREADME.mdを作成して確認する。 # h1 ## h2 ### h3 #### h4 ##### h5 Headers ## List * Item 1 * Item 2 * Item 3 + Item 3-1 + Item 3-2 ## Link [Vuepress](https://vuepress.vuejs.org) README.mdのあるディレクトリで下記コマンドで動作を確認できる。 $ vuepress dev HTMLファイル等を生成するには下記コマンドを入力する。 $ vuepress build Now とは Nowとは簡単にWebアプリをデプロイできるサービスのこと。 CLIからコマンド一回でデプロイすることができる。 今回作成したサイトをさくっと公開するために使ってみる。 このデプロイの仕方はNow公式でも書かれている。 nowコマンドの使い方...

March 26, 2020 · 1 min · 143 words · FAMASoon

x64の関数呼び出し

概要 関数呼び出しの解説でよくあるx86プログラムみたいな動きをx64でやってみる 環境 $ uname -a Linux ubuntu-xenial 4.4.0-97-generic #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial $ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609 x86でコンパイル まずはx86でのスタックの動きを書く。 まずは下のコードを"stack_test.c"として保存する。 void test_func(int a, int b, int c, int d){ int x, y, z; x = a + b; y = c + d; z = x + y; } int main(void){ test_func(1, 2, 3, 4); return 0; } これをコンパイルして"x86"というファイルで保存し、ディスアセンブルする。...

March 26, 2020 · 6 min · 1072 words · FAMASoon

Extract Windows KB

手順 Windows Updateのセキュリティパッチから差分を撮ってみる 問題となっているCVE番号で https://portal.msrc.microsoft.com/en-us/security-guidance を調べる(今回例としてはCVE-2019-0786について) 当該脆弱性のアドバイザリがあればそれを開く https://portal.msrc.microsoft.com/ja-JP/security-guidance/advisory/CVE-2019-0786 “Secuirty Update"から回答のアップデートをダウンロード msuファイルをダウンロード ダウンロードしたmすふぁいるを展開する wusa.exe C:\installl.msu /extract:c:\test\ または expand /f:* C:\install.msu C:\test\ msuファイルを展開して出てきたcabファイルを更に展開 expand -F:* update.cab C:<target_dir> Ghidraで差分を確認 Ghidra Pro book に載っているので要参照 終わり

March 15, 2020 · 1 min · 31 words · FAMASoon

HackTheBox Walkthrough - Granny

About Granny Granny Nmap Port scan revelals IIS 6 running on this machine. # nmap -sV -sT -sC -o nmapinitial 10.10.10.15 Starting Nmap 7.70 ( https://nmap.org ) at 2020-01-25 10:55 EST Nmap scan report for 10.10.10.15 Host is up (0.22s latency). Not shown: 999 filtered ports PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 6.0 | http-methods: |_ Potentially risky methods: TRACE DELETE COPY MOVE PROPFIND PROPPATCH SEARCH MKCOL LOCK UNLOCK PUT |_http-server-header: Microsoft-IIS/6....

February 2, 2020 · 7 min · 1291 words · FAMASoon

Note - Links for OSINT

Links Link Title Note https://domainwat.ch/ DomainWatch Show whois and domains info https://www.similarweb.com/ja SimilarWeb Analyze web site https://myip.ms/ Myip.ms Show IP address or domain’s info https://website.informer.com/ website.informer.com Show web site information https://domainbigdata.com/ DomainBigData Show domains information http://www.ymkp.com/ 域名科普网 Search whois information that focused on Chinese area https://tools.digitalpoint.com/cookie-search Cookie Search Search cookies https://www.shodan.io/ Shodan Search engine for Internet-connected devices https://censys.io/ Censys Search engine for Internet-connected devices https://www.robtex.com/ Robtex Research of IP numbers, Domain names, etc https://otx....

January 23, 2020 · 1 min · 118 words · FAMASoon

Crash JSON in golnag

内容 下記のコードを見てほしい。 package main import ( "encoding/json" "fmt" ) func main() { var JSONDATA = []byte(`{\"\":'AAAA'}`) fmt.Printf("%v\n", JSONDATA) var raw map[string]interface{} err := json.Unmarshal(JSONDATA, &raw) if err != nil { panic(err) } fmt.Printf("%v\n", raw) } JSONをインターフェースにアンマーシャルしている。 これで構造体の中身が可変でもまぁ何とかUnmarshalできる。 では実行してみよう。 $ go run main.go panic: invalid character '\\' looking for beginning of object key string goroutine 1 [running]: main.main() /Users/doejohn/work/projects/fuzz_go/fire/json/case2/main.go:13 +0x13c exit status 2 うーむ、エラー内容をみるに本来\"\"として認識する所を\\として認識してエラーが発生しているよう…? ちょっと手を加えてきちんと"とかを認識しているか確認。 package main import ( "encoding/json" "fmt" ) func main() { var JSONDATA = []byte(`{\"\":'AAAA'}`) fmt....

December 12, 2019 · 1 min · 193 words · FAMASoon