ホワイトハッカーってかっこいいよね
ストーンビートセキュリティさんの勉強会に参加してきました。
今回は全10回になるペネトレーションテスト勉強の記念すべき第一回。
2~3年前にも同様の勉強会をやっていて今回はリバイバル版だそう。開催に感謝!
ペネトレーションテストとは
- システムの安全性評価の手法
- 実際の攻撃者が悪用する技術でシステムへの侵入可否や侵入後の影響などを調査
なぜ攻撃手法を学ぶのか?
攻撃手法を学ぶことで守りに転用する
→「攻撃は最良の防御」
講師デモ(root権限の取り方)
Hack the boxのTraversec
https://app.hackthebox.com/machines/217
- わざと脆弱性のあるマシンを攻撃する
- ユーザー権限とシステム権限を取得する時間がユーザー毎に表示される
雑メモ
- まずpingで通信確認
- portスキャン(nmap)でパケットを送って空いてるポートを探す
- sshでコネクション確認
- ブラウザで確認(ディレクトリとか入力フォームとか)
- cheat.shでコマンドオプションの確認しつつ
- gobusterで辞書リスト攻撃
- ポート指定で深く調査(バージョンチェック)
- ソフトウェアとバージョンがわかったらググってみる("exploit"と検索ワードに含めてみたりする)
- EXPLOIT DATABASEで実証用の攻撃コードが公開されている
- serchsploitで脆弱性リストを表示させる
- 攻撃コードを実行して脆弱性が生きているか確認する
- 待受ポートを立てる
- サーバに侵入する(コマンドでshellが使える状態にする)
- ls等のコマンドで内部を覗く
- 知らない情報(ソフトウェア等)に遭遇したら都度よく調べる
- 重要そうなファイルをncコマンドで窃取
- ファイルから秘密鍵を入手
- パスワードを奪取
- 秘密鍵とパスワードで正当ユーザーとしてログイン(ユーザー権限獲得)
- catコマンドで色々ファイルの中身を見ていく
- 権限昇格とかの情報を知れる便利なサイトGTFOBins
- !/bin/shを実行(root権限獲得)
ペネト関連資格の紹介、勉強の進め方
資格は幅広くある
pauljerimy.com
第一歩としてCompTIAあたり?
Hack The Boxでも最近資格制度を始めている
ペネトレーションテストをやる時はテストの実施許可・同意を必ず得ること
基本は専用のサイトで学ぶ
今後の予定、次回以降の準備
- Hack the boxのアカウント作る
- お金に余裕があればVIP会員にもなっておくとなおよし
所感
- 3~4年前に8946とかのサイトでハッキングの練習してたのを思い出して懐かしい気持ち
- (調べたら8946閉鎖されててびっくり)
- M1 Mac使ってるのでKali入れるのに一手間いりそうな予感がする
- 王様達のヴァイキングを読み返したくなった
マッチングエンジンに関する勉強会メモ
ビットバンク株式会社の勉強会にお邪魔してきました。
何気にディスコードでの勉強会参加したの初めてかも!
bitbank.connpass.com
登壇者
エンジニア
尾島さん
営業(進行役)
鈴木さん
ビットバンクのマッチングエンジン
- 秒間処理件数
- 2500件/s
ある程度処理が増えてきたらシステムがビジー状態をユーザーに返すことで一定時間注文を受け付けなくするそう
これによって基本的に秒間処理件数をオーバーする事はない見込み
- 注文日数
- 最大2000万件弱
- 直近1000万弱
ちなみにアローヘッドは1日で2億件も捌いてるらしい
すごいスケールだぁ
注文を捌くための工夫
- 性能面
- オンメモリ処理
- I/Oの削減、局所
- パフォーマンスチューニング
特にI/O削減の効果は大きいとのこと
工夫
- 拡張性を意識した設計
- CQRS × Event Sourcing
- 拡張性を意識した管理機能
- 動的な手数料変更
- 動的なペア追加
つまりキャンペーンの開始/終了とかをノーメンテでできる。
この管理機能めっちゃ欲しい!
Macのトラックパッドでもミドルクリック(ホイールクリック)を使いたい
解決方法:MiddleClick.appをインストールする
公式サイトでは Homebrewでのインストールを推奨しています。
ターミナルから下記コマンドを実行
brew install --cask --no-quarantine middleclick
インストール後、アプリケーションフォルダに格納されているMiddleClick.appを起動すれば準備OK
ミドルクリックでできること
- タブを閉じる
- リンクを新しいタブで開く
- ブックマークバーのフォルダ内ブックマークを全部開く
- ターミナルで選択しているテキストをペーストする
ミドルクリックでより快適にトラックパッドを使おう!
useEffect has missing dependencyのエラーを消したい
経緯
ESLintのuseEffect has amissing dependencyというwarningを放置したままpushしたら
Netlifyの自動デプロイに失敗していた
原因
useEffect内で依存関係のある変数を使用
かつ
useEffectの第二引数が空配列の場合
解決方法
- 依存関係を解消する(dependencyが更新されるたびにuseEffectが実行されてしまう)
- 特定行だけESLintのルールを無効にする(今回はこれ)
- package.jsonの設定でESLintを無効にする(コード全体で無効になる)
下記コメントを挿入することで次の行のwarningを無効にできる
// eslint-disable-next-line react-hooks/exhaustive-deps
例
useEffect(() => { if (state.requestStates !== requestStates.loading) { return; } fetchReposApi(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [state.requestStates]);
第二引数を空配列にしているuseEffectが2回呼ばれてしまう
原因:
create-react-appで作成したアプリのindex.tsxが使用している
意図しない副作用の検出のためにコンポーネントを2度呼ぶようにしている。
ja.reactjs.org
StrictModeの利点:
- 安全でないライフサイクルの特定
- レガシーな文字列 ref API の使用に対する警告
- 非推奨な findDOMNode の使用に対する警告
- 意図しない副作用の検出
- レガシーなコンテクスト API の検出
- state の再利用性を保証する
これは検証用の機能であり、開発モードでのみ適用されるため本番環境においては問題なし。
読書メモ-思い通りに人を動かすヤバい話し方
yes, but話法ではなくyes,by the way話法を使う
例)
客「MacBook Proを買いたいが高い」
店員「おっしゃる通りで(Yes)、決して安くないと思います。ところで(by the way)何と比べて高いと思われたんですか?」
客「今使っているPCが10万円くらいで」
店員「それは高く感じますよね。ところで(by the way)なぜ今回はMacBook AirではなくMacBook Proをお探しなんですか?」
客「動画編集をしているのでMacBook Airだとスペック的に足りないんです」
yes, butだと否定で終わってしまうため、by the wayでこちらが提案したい内容に対して客自身から肯定的な意見を引き出させる
ポジショニングのコツはわかりやすいイメージ(形から入る)
「ベタ」は万人の共通認識
カレー屋:日焼けする
占い師:スピリチュアルな格好
教祖:神秘的な格好
メラビアンの法則
別名「7:38:55の法則」
人の印象の割合は下記の通り
7%:言語情報(何を言っているか)
38%:聴覚情報(声)
55%:視覚情報(見た目)
どのような見た目の人がどんな声、どんな振る舞いで話すかが大切
何を言っているかはさほど重要ではない
ブサイクは雰囲気イケメンになれ
話を聞いてもらうためには最低限の見た目が必要
ある程度のお金をかければある程度の身だしなみはできる
「ブサイクは容姿に金をかけない」
⇨ブサイクはブサイクゆえのマインドによってブサイクのままでいる
ダサいから抜け出すチェックリスト
1.服・靴・鞄のサイズ、コーディネート、組み合わせ
2.毎日のスキンケア(最低限風呂上がりのワセリンだけでOK)
3.5000円以上の美容室で月1回以上のカット
└合う髪型をカウンセリングしてカットしてくれるライン
4.ヒゲ脱毛
5.筋トレ
人に対して肯定を引き出す訪ね方
「わかりやすく言うと、〜みたいなものです。なんとなくわかりましたか?」
こちらにとって都合の悪いものをわざと複雑な単語を使って誤魔化した後にこのフレーズが使われる
人は馬鹿とは思われたくないため、よくわかっていなくても自分に嘘をついてわかったふりをしてしまう
SPA開発時に知っておきたいこと3選
1.ページ切替の際にサーバにリクエストが飛ばないためアクセス解析が困難
ソリューションとしては、
URLが書き変わる際にEffect Hookでアクセス解析(Google Analytics等)にリクエストを発行する処理を差し込む必要がある
2.サーバがHTTPステータスコードを返せない
既存のページを削除したときにサーバが404を返さないので検索エンジンのインデックスに残り続ける
そのためサイトマップやGoogle Analyticsの管理機能でフォローする必要がある。