ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

情報セキュリティ対策自主研修 第34回 「IPAの「情報セキュリティ白書2025」を観よう」を開催しました

情報セキュリティ対策自主研修 第34回 「IPAの「情報セキュリティ白書2025」を観よう」をクローズドで開催したので、簡単な感想を書きます。

題材

  • www.ipa.go.jp
    • 2025/09/10に公開されたばかりです!
    • 軽く見てみたら、能動的サイバー防御やJC-STAR、SBOMのことが書かれており…ちょっと取り上げたいな…と思ってチョイスしました。
    • 資料を作る時間はないので、NotebookLMに1章ずつ読み込ませて、動画でまとめてもらいました。

感想

  • 事前予習で、AIが述べている感想や、数値やグラフの取り上げ方がおかしいことはわかってましたが…あらためて聴き直すとやっぱりおかしかったです><
  • 結論的なものが各章の動画の最後につけられていたんですが…ピンときませんでした。自動生成ですからね…。
  • 能動的サイバー防御のテイクダウンが世の中で心配されていると動画内で言われてましたが…政府機関がインフラ事業者から通信記録をもらうことのほうが気になると思っていたので、アレ?となりました。この辺は人によるんですかねぇ…。
  • 動画の最後で、中小企業の対策としては、まずはIPAの中小企業向けのガイドラインを中心にいろいろ揃っているのでそれを使え、と言ってました。これは大賛成で、うちもこれを使ってます。

運営としてのふりかえり

KPT方式で。

前回のTry

Keep

  • 時間的にはちょうどよかったです。
  • 新しいツールを使ってみました。
  • 毎月やっているせいか、なんとなく知ってる、みたいな感想も聞かれて、やっててよかったです。

Problem

  • AIはやはり微妙…。
    • わかってはいたので冒頭に「鵜呑みにしないでね」、最中にも何度かいいました。
    • うちのメンバー、AIをよく使ってるんでわかってると思いますけど。

Try

  • 興味ある話題を地道に訊き続けます…!
  • 長い資料があれば、またNotebookLMを使います。

メモ

  • 終わったあとにやること
    • [ ] Google Meetのメッセージの保存
    • 謝辞と感想
      • [x] twitter
      • [ ] facebook
      • [ ] mastodon
      • [ ] bluesky
      • [ ] mixi2
      • [ ] connpassのイベントメッセージ
      • [x] ブログ
  • 次回準備
    • [ ] Canva ホワイトボード
    • [ ] connpassイベント
    • [x] ネタぎめ
    • [ ] 告知
  • 直前
    • [ ] 告知
    • [ ] リマインドメール

(おまけ)NotebookLMについて

音声解説

  • アウトプットが30分程度になってました。
  • プロンプトを与えられるので、うまくすれば調整ができるかも。
  • 対談形式…微妙でした。
    • 無理な対立構造になってました。
    • 人の声が途中で変わっちゃいました。

動画解説

  • アウトプットが30分程度になってました。
  • プロンプトを与えられるので、うまくすれば調整ができるかも。
  • 数値やグラフが謎なものがありました。
  • 煽り方がなんか微妙でした…。
  • 今回使ったプロンプト
    • 個人よりは企業よりの話題を多めにお願いします。
    • また、10人未満の企業だったらどうだろう?という話題を可能なら入れてください。
  • 次回は…↓を追加しようと思います。
    • 話し方は、事実を並べて淡々と説明する感じでお願いします。

プリンシプル オブ プログラミング 第5章のメモ

プリンシプル オブ プログラミング読書メモです。

第5章 習慣 ~プログラマのルーティーン~

5.1 プログラマの3大美徳

プログラマは「怠慢」「短気」「傲慢」であれ

  • 自分はどれくらい「怠慢」「短気」「傲慢」なんだろう…?
  • 最近は「テスト」…というより「CI」が重要だと思ってます。

「怠慢」「短気」「傲慢」で作業を仕組み化

  • 数回程度頼まれるものはスクリプトSQLを含んだ作業メモに、しょっちゅう頼まれるものはBIツールやアプリケーションに…と変えてます。
    • これ、作業を頼む人数次第では最初からBIツールかもですね。

「自動化」「ひな型化」「モジュール化」

  • 「短気」について書かれている先回りは…よく考えるべきかと…。
    • 勝手に作らず、提案する、ね。
  • 「恥ずかしくない」は背伸びをしてかっこいいコードを書く、ではなくて、ちゃんと説明できるコードを書く、を目指してるかも。うまく書けないときには、その場所にコメントでメモを残したり、プルリクに書いたり…。同僚や未来の自分に対して助けを求めてます。

ハードワークは報われない

  • 自身だけでなく、組織のメンバー、ユーザも。

5.2 ボーイスカウトの規則

コードを掃除して帰る

  • tidy first!
    • …よまなきゃ…。

コードの腐敗を抑止する

  • 改善を続けろ…は、完全同意です!

コードは改良してからコミット

  • 改修の近辺で、「おおっと」となったところを手直しするようにしてます。
    • 時間的に手に負えないなら、コメントでFIXMEを残します。

プログラミングは「急がば回れ

  • 品質は…今ほぼ一人だから、自分に降り掛かってくるんですよ……。
  • ユニットテストを省略…?できないとき以外ははしません!
    • 省くのは、上位の工程の異常系ですね。
  • コスト削減のため、目的が適合しないのに既存システムを無理やり…?はないかなぁ…。
    • 過去のコードにあって、涙してるのはあります><

5.3 パフォーマンスチューニングの箴言

「速い」コードより「よい」コード

  • 2つのルールで、両方ともするなって…全く持ってそのとおりですねw

速いコードは「割に合わない」

  • 書いてあるとおりで、なんにもいいことなんかないです。
  • 実際に困っているという事実があれば…パフォーマンス・チューニングという時間をとって、よりよいコードに直していくのがよさそう。

まず「よいコード」を書く

  • 遅いときはそもそも分析が誤ってるか、実装がスパゲッティになってるか…計算コストがバカ高いものを何度も再計算してるとか……。
    • 計算コストの…は、事前に計算しておく、という構造変更の必要があって…小手先のパフォーマンスチューニングは不要です。
  • とにかく良いコードに直すことからですね…。

ソフトウェアのパフォーマンス

  • んだんだ。

アーキテクチャのパフォーマンス

  • うちの重い計算コストの話はこっちかな。

パフォーマンスチューニングの手順

  • ここまでやるのが理想なのはわかりますが…。
  • そもそもの作りが悪いので遅い問題が多いので、ここまで至らないことが多いです。

5.4 エゴレスプログラミング

エゴを捨てよ

  • これ、難しいですよね…。
  • 心理的な安全が確率されてないといけないので、一プログラマの責務ではないと思います。
  • …とはいえ、必ず頭に置いています…。
    • コードは自分のものではなく、組織のものだと。

エゴレスで品質向上

  • コードの私物化について、心がけても、そっちに寄ってしまうことは避けられないので…。
    • どうしたらいいんですかね…?
      • みんなで「約束」する場を設ける…?
  • rubocopなどの静的解析、github copilotなどを使って、人間の指摘を減らすと、結構効果があると思ってます。

エゴレスプログラミングの十戒

  • これは…そのとおり。

エゴレスのバランス

  • エゴの排除じゃなくて、バランス…。確かにそのとおりですねえ。

5.5 1歩ずつ少しずつ

ステップ・バイ・ステップ

  • わかってる、わかってるんです。でも難しい><
  • つい、まとめてやっちゃうんですよね。頭に思いついたものをとりあえず書いてしまいたい欲というか…。

「手堅い歩み」は効率的

  • 結果効率的なのはわかってます💦

一度に複数やらない

  • テスト駆動開発は…自分には合わないですね…。
    • ざっと作って概ね動作することを確認してから、テストを書きつつ詳細を詰めるのが、一番しっくり来ています。

思考も「1歩ずつ少しずつ」

  • よく考えると…この一歩ずつ結構いいかも。
  • 頭で覚えておける量って、そんなに多くないので…箇条書きにでも思考順を書いておけると、あれ?ってなったときに、確認しやすそうです。

論理的思考のコツ

  • 何かしら書きながらやるのは、たしかにいいと思います!
    • 箇条書きを構造化しながら書くというか。
    • そうすると、全体のバランスもなんとなく見えますしね。

5.6 TMTOWTDI

ツールの多様性は善

  • わかるけど…大変ですよね💦

対象が多様なら手段も多様

  • ツールが複雑・多様なら、グルーコードがシンプルになるってことですかね…。

選択肢をたくさん用意

  • ツールを便利にすれば、そのツールが使われた分だけリターンがあるから、ということですか。

TMTOWTDIとシンプル

  • 「シンプルさ」をどこに持ってくるのか、ということだということで、なんとなくわかりました。
  • これ、Slackはまさにこれ?

第72回Software Design (2025年9月号) 輪読&座談会 に参加してきました

いつもおせわになっている第72回Software Design (2025年9月号) 輪読&座談会に参加してきました。

softwaredesign.connpass.com

予習

表紙

  • 「猫に戻った!」わけじゃなく、「スナネコ」じゃないか?という話をしました。
  • 自分は今回調べてようやく「スナネコ」を知ったんですが…もともと知ってた方もいたようで。

第1特集 AI開発が加速 MCPでどう変わる? LLMアプリ開発 Model Context Protocolのしくみと活用方法を探る

  • 社内MCPを使っている方もいて…なかなか参考になりました。
    • 応答がなくなったり、いい答えが返ってこないとか…。
    • 運用がちょっと大変そうな印象を持ちました。
  • オフトピでローカルLLMの話が出たんですが…。
    • 「ウソばっかつく」という感想も…。
    • 「メモリを16GBくらい使ってた」という話も出て…次に買うマシンのメモリ、考慮に入れる必要が出てくるかも?

第2特集 文字トラブルに終止符を 完全理解文字コード Unicodeの基本、データベースへの影響、絵文字のしくみ

  • 文字コードの凄まじい戦いの歴史、今もまだまだ戦い中という、話を聞かせてもらいました。
  • 今はまだ現在に存在する文字を載せる話が終わってなく…。このあと時代が進むと…新しい言葉が生まれてくるとかあるのかしら?
  • 今日久しぶりにPC-8001の名前を聞きました…。
  • 絵文字、合字、カラーリングの話で苦笑い、アニメーションでずっこけた感がありました…。
  • …ほかにもいろいろあり…この特集が大盛りあがりでした。

【新連載】技術選定の舞台裏 【1】mixi2……古城 秀隆、川瀬 寛也

プログラミング×AIの最前線 【6】バイブコーディングによるプロダクト開発実践レポート②……木下 雄一朗

  • プロダクトマネージャーの立場から、とりあえず動くものがすぐ作れて、それがあるとものすごく話が早くなるのでとてもよい!という話をしてもらえました。
    • たしかに企画書より、目の前に触れるものがあると、実感しっぷりが半端ないですもんね。
    • 以前は紙のプロトタイプだったのに。

はじめてのオフェンシブセキュリティ 【3】Metasploitを使ってサーバに侵入してみよう!……皆川 諒、監修:株式会社エヌ・エフ・ラボラトリーズ

  • Purple Flair、めっちゃいいのでおすすめ!という話が出ました。
  • 記事に連動しているコースがあって、がんばりやすそうでもあります。

インターネットの姿をとらえる 【13】DDoS攻撃のトレンド……土屋 太二

最後に

今回も刺激的な会で、ひとりで読むよりずっと学びがありました。 また次回も行こうっと。

Software Design 2025/09 メモ

Software Design 2025年09月号を読んで、ちょこっとずつ感想を書いてます。

gihyo.jp

表紙

  • 猫…じゃないはずだけど…なんだー?
  • Googleの画像検索したらスナネコっぽく…。
  • チャッピーにも訊いたら、やはりスナネコだと。
    • しかしなかなかにするどい…。
      • これは ネコ科の動物 です。ぱっと見はイエネコに似ていますが、耳が大きくて顔つきが少しワイルドなので、スナネコ(Sand Cat) の可能性が高そうです。
      • スナネコはアフリカや中東などの砂漠地帯に生息する小型の野生ネコで、「世界一かわいい野生ネコ」と紹介されることもあります。

第1特集 AI開発が加速 MCPでどう変わる? LLMアプリ開発 Model Context Protocolのしくみと活用方法を探る

第1章:LLMアプリ開発の現在地 作業の自動化から業務の自動化へ……江頭 貴史

  • ざっと眺めるのによかったです。
  • LangChain以外のフレームワークの存在も探してなかったので…これもよかったです。

第2章:MCPのしくみ ゼロから最新仕様までキャッチアップ……御田 稔

  • 自分が会話する相手がMCPホストなのかしら?と思ってしまうような図でしたが…よく見るとクライアントに矢印が刺さってますね。なるほど…。
  • ホスト、クライアント、サーバという言葉が並んでて…混同しそう💦
  • サンプリング…なんか気をつけないとヤバそう。外部から内部のLLMに触ってるように見えます。強調するには必須かなぁ…。

第3章:MCPを使ったLLMアプリ開発 AIエージェントや開発環境にMCPサーバを取り込む……岩本 隆史

  • AWSのStrandsの例はめずらしくてよかったです。

第4章:MCPを自社で活用する デザインシステムやSlackへAIエージェントを広げる……江崎 広太、大久保 諒

  • デザインシステムを作るところなのか…。
  • しかし、こういうのは相性がよさそうすぎます…。

第2特集 文字トラブルに終止符を 完全理解文字コード Unicodeの基本、データベースへの影響、絵文字のしくみ

第1章:文字コードの基礎とUnicodeの最前線 歴史から現在直面している問題まで……田丸 健三郎

  • ざっとおさらいが書いてあって、いい感じです。

第2章:データベースにおける文字コードの落とし穴 文字列のソートが単純な文字コードの並び替えと思ったら大間違い……とみたまさひろ

  • あ…文字化けはなくなったけど…ソートは問題出そうですね…。
  • 漢字の読み方のソート、MySQLにはないのか><
  • 困ったらまた読みに来ます…!

第3章:絵文字の符号化技術 絵文字表現のウラ側とトラブル対処法……おぐえもん(小倉 且也)

  • 合体絵文字も初めて聞いたときはびっくりでしたが…アニメーション絵文字って…マヂすか…。

特別企画 どのOSで開発するか? コンテナエンジンは何を選ぶか? コンテナアプリケーション開発環境の基本と最新事情……田中 智明

  • Appleのcontainer?なんか気になりますね…。
  • 来年か!
  • Apple Silicon/macOS最適化……これは気になる……。
  • 楽しみすぎる…!

連載

ITエンジニア必須の最新用語解説 【201】Hono……杉山 貴章

  • 🔥だ!
  • cloudflare workersのようなエッジを使ったアプリケーションを作るなら、ちょっと使ってみたいと思っています…!

万能IT技術研究所 【40】今現在の風景に、百年前の中原中也を重ねて眺める——写真撮影視点から、先に見える世界に行ってみよう……平林 純

FE/AP試験問題に挑戦 【11】午前試験を午後試験に役立てる……石田 宏実

  • ハックとしては数学的な基礎部分を後回しに…というのはわかる…。
  • 暗記じゃなくて、脱線してあれこれ調べると…午後の対策になるのか…。
    • 自分は集中力がなくて、つい脱線し気味で💦
      • このメモもそんな感じw
  • 問題
    • その1 … ウ
    • その2
      • c … serv
      • d … w.x.y.z

ドメイン解体新書 【20】PSL(Public Suffix List)の基本と問題点……谷口 元紀

  • おお…有志によるリスト…。これでCookieに影響があるなんて、おお…。覚えておきますφ(・
  • モグラがクッキーを食べてるw マカデミアナッツのかな?

ネコ、コード、ネコ 【3】エンジニアの採用……植山 類

  • なんか、給与エラい金額ですね…。

【新連載】パッケージマネージャーNix入門 【1】Nixの世界へようこそ……たけてぃ

  • んー?どういう意味だろう…?
  • 「同じ入力に対して同じ出力が返る」…たしかに、理想ではありますが…。
  • すげーディスク喰いそうと思ったら、そうらしい…。

【新連載】技術選定の舞台裏 【1】mixi2……古城 秀隆、川瀬 寛也

  • まさかのflutter!
    • iOS/Android両対応だと選択肢に入りますね。
  • Go…シンプルな書き味がGithub Copilotとマッチって…なるほど、そんな効果が期待できたんですね…!
  • TiDB…使ってみたい感ある…。
  • Linearは…これかしら。どうやって探すんだろう…?
  • 規模がウチと違いすぎて、駆け足で読んじゃったけども…これ、いろんな会社が来るのか…。結構楽しみ…!

つまみぐい関数型プログラミング 【4】関数型プログラミングの便利な道具②:高階関数……田尻 裕喜

  • 高階関数…これ、普段から使ってる考え方かも。
    • メソッド名を名詞型でつけて、値とメソッドの区別をなくしてますね。
  • mapとかfilterはEnumerableにありました。foldLeftはreduceか。

Ruby×静的型付け戦略 【5】現場における型付けRubyの実践……藤崎 亮人

  • 導入後の実践的な問題…今回もいい話題ですね…!
  • 型運用ポリシー、参考になりますね…。
    • ウチでも入れるときに、この項目については考慮することにします…。
  • def_nil_bangマクロ、いいですね…。
  • 円とドルの演算を検出…これもいいですね。

プログラミング×AIの最前線 【6】バイブコーディングによるプロダクト開発実践レポート②……木下 雄一朗

  • バイブコーディング……まだ懐疑的なんですよねぇ…。
    • ペアプロすりゃいいんじゃね?っていう気持ちも。
  • このアイデア、夢想したことはあるけれども…どうやったら費用を捻出できるか、イマイチ…。どんなアイデアなんでしょう…?そこがとてもキモ感があります…。

実践LLMアプリケーション開発 【24】LangGraph Supervisorによるマルチエージェント開発実践……西見 公宏

  • 先にタスク分解、todo作って、それに基づいて一つずつ完了させようって…人間と同じですね。
  • 外部メモリを使うのも、なんか、コンテキストを混乱させないようになりそうで、よさそう。
  • これ…そのうちにやってみたいですね…。

AWS活用ジャーニー 【35】Amazon Security Lake……杉金 晋

  • 似た名前のCloudTrailとの違いについてのコラムがいいですね…。
    • なんかで見たときに比べた記憶が…。

はじめてのオフェンシブセキュリティ 【3】Metasploitを使ってサーバに侵入してみよう!……皆川 諒、監修:株式会社エヌ・エフ・ラボラトリーズ

  • ちょっとあとでやろう…。
  • 試すとそれなりに時間かかるんですよね。

(追記) - やった! -

侵入成功!(Purple Flair)
- 世の中に検証用としてexploitコードが出回っている…というのは、一見怖いと思いつつ…でも、こうやって公表されてなければ、防ぐ対策を行っても検証しようがないのでマズイですよね。 - そして、exploitコードはどっちにしてもアングラで出回ってる…と。 - 公開のほうがきっと、いいと思います。

乱数のひみつ 【7】安全なデータ通信の鍵を握る乱数……荒木 誠

  • ホント、公開鍵の技術スゴイですよね…。相手の正当性もわかっちゃうし。

インターネットの姿をとらえる 【13】DDoS攻撃のトレンド……土屋 太二

  • DDoS攻撃者の目的…確かに対象によって違いますね…。
  • たしかに超ゆっくり応答されるとキツイですね><
  • ホント、DDoSってどうにもならんですよね><

魅惑の自作シェルの世界 【34】関数の実装(後半)……上田 隆一

  • 引数…これも大変そうですね💦

あなたのスキルは社会に役立つ~エンジニアだからできる社会貢献~ 【164】アフターピル検索システム開発記〜機械可読性の低いオープンデータとの格闘〜……白須 真鶴枝、長田 学、谷村 直道、岩崎 絵里加

  • アフタービル、とりあえず処方箋不要になってよかったです💦
  • ああ、これの検索システム…結構ありがたそう。

その他

SD BOOK REVIEW

SD NEWS & PRODUCTS

  • RHELを開発・テスト目的で無料なのはありがたいかも。

プリンシプル オブ プログラミング 第4章のメモ

プリンシプル オブ プログラミング読書メモです。

第4章 視点 ~プログラマの観る角度~

4.1 凝集度

モジュールは「純粋」に

  • 下の方のレベル、なにを言ってるのかピンと来なかったんですが…望ましくないからですね><
  • うちになんかあるかと思ったんですが…置き場所に困った便利関数の集まりのUtilモジュールは、暗合的といえるかも。
  • 凝集度を意識して直した部分
    • Slackモジュール
      • 暗合的強度のものでした><
        • パスワード再設定があったことを通知するメソッド、中途半端にチャネル名を環境別に出し分ける機能と…
      • 普通にインスタンスを得て、ポストするだけのものを作りました。

雑じり気のあるモジュールは脆い

  • 「雑じる」って「まじる」と読むんですね…。知らなかった💦
    • 雑種っていうのもそれかあ。

高強度モジュールを目指す

  • 「目指す」という言い方はいいですね。事情によりけりですもん。
    • 場合によっては初期化モジュールだってアリだと思いますし。

4.2 結合度

モジュール間は「疎遠」に

  • レベル2は…そんなんするわけないじゃん!って思ったけど……グローバル変数かあ…。
  • レベル6は…大変そうすぎる…。

相互依存モジュールは脆い

低結合モジュールを目指す

  • 動作が変わるコードを書かないって……昔書きたくなったこともありましたw
    • 普段触ってたCUIのコマンドとか、結構ありますよね。gitコマンドとか。

ハイブリッド結合

  • 昔、スクリプト言語だとエラーが起きないんですもん。昔はやってました🙏

結合の本数と方向

  • つながっているモジュールの数と、方向は常に気をつけています…。無視すると目も当てられないですもんね。

べき等性と安全性

  • 何度実行しても同じ結果、というのはめっちゃ大事ですよね…わかる。

4.3 直交性

コードは独立させよ

直行コードは堅牢

  • コード間に関係性ががなければ、そりゃそうだって気持ち。

コードのレイヤー化

  • レイヤー化をするというより、上位から下位のように依存の方向を揃えようっていう形でもあるかしら。

リレーションの直交性

リレーションの定義

4.4 可逆性

「UNDO」可能な選択をせよ

  • わかりみしかない💦

最終決定などない

  • ああ、いつから最終決定なんてないってわかったんでしょう?
    • タイムボックス内にはありますけどね。

特定技術に依存しない

  • 気持ちとしてはわかる…。
    • 「バランス」という身も蓋もない言い方にどうしてもなっちゃいますね。
      • バランスって、そのときにできるだけいろんなことを考慮しろってことなだけかも。

アーキテクチャの可逆性

  • 気持ちはわかるが…そこまであんまりやらないですかね…。
    • たぶん、外部サービスを利用する際にgemを探すからかも。

4.5 コードの臭い

コードの凶兆を見逃すな

  • reekを入れて、ツッコミが入るようにしています。

嗅覚はリファクタリングの必要条件

  • 汚いコードをまずはきれいにする、Tidy First ですね!

臭いの傾向を知る

  • reekで嗅ぎ取れない部分……「よく見る」「名前があわない」ですね。
    • 「よく見る」はcodecovで検知できたと思います。(入れてないですが…)
  • 嗅ぎ取れた部分はレビューに回す前に対処してます。

4.6 技術的負債

問題コードは「借金」である

  • 「借金」という言い方は、利子がつくところが一番しっくりきます。
    • 借金クラスを別のところで使っちゃうことが利子というか…。
    • 首の回んなくなってるのが一個あるんですよね><

問題コードとうまく付き合う方法

  • 問題「コード」ならどうにかしようも…なくはないですが、問題「設計」・問題「仕様」・問題「要求」だともう><

問題コードを管理する

  • 損失を覚悟しているのが、今ですね💦

コードをきれいにする意義を説明

  • 現職では幸い困ったことがないです。人数が少なく、普段から様子を共有しているからですね。

問題コードの誘因

  • 開発当時はテストも何も導入されていませんでした💦

技術的病気

  • 病気に例えるのは…個人的にはちょっと違うかな…と。
    • 自然治癒を期待しちゃいますもん。

暫定ソリューション

  • うちの首の回らなくなった負債、暫定ソリューションですね…。
    • 思いつきの暫定要求を実装しちゃダメです><

Purple Flair 「ペネトレーションテスト ポートスキャン 列挙 基本」をやってみた

はじめに

  • Software Designで「はじめてのオフェンシブセキュリティ」が連載されていて、その中で紹介されているPurple Flairの演習をやってみました。
    • 記事内にPurple Flairの招待コードがあって、無料でできます。

ncを使ったポートスキャン

  • ポートスキャン…普段やっちゃいけないことなので、自身のマシンや自PC上の仮想マシンに対して試したことがちょっとあるだけなので…ちょっと背徳感w
  • 知ってはいましたが…あらためてこんな簡単に開いているポートが見つかるなんて…という思いです。

ncを使ったポートスキャン

コマンド全出力

┌──(kali㉿kali)-[~]
└─$ sudo nc -zv 10.0.177.5 1-65535
ip-10-0-177-5.ap-northeast-1.compute.internal [10.0.177.5] 80 (http) open
ip-10-0-177-5.ap-northeast-1.compute.internal [10.0.177.5] 22 (ssh) open
ip-10-0-177-5.ap-northeast-1.compute.internal [10.0.177.5] 21 (ftp) open

nmapを使ったポートスキャン

  • ncコマンドより…うわあ…強力ですね…。
  • ftpサーバのバージョンがわかっちゃったりします…。
    • SD読み直したら…匿名ユーザのログインもできますね…。
      • ftp-anon: Anonymous FTP login allowed (FTP code 230) って書いてありました。
  • httpは…ページタイトルからstrutsってわかりますね…。
    • ブラウザで見るまでもなく、最初のページの中身がざっと見れてしまうとは…。

nmapを使ったポートスキャン

コマンド全出力

┌──(kali㉿kali)-[~]
└─$ sudo nmap -A 10.0.177.5 -p-   
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-10 18:27 JST
Nmap scan report for ip-10-0-177-5.ap-northeast-1.compute.internal (10.0.177.5)
Host is up (0.00022s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.3.4
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 10.0.176.5
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 2.3.4 - secure, fast, stable
|_End of status
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 98:10:f5:3c:cf:a1:f7:f0:4e:76:c9:47:a0:fe:6f:eb (RSA)
|   256 3b:9d:af:52:73:0a:d8:14:c3:d6:1e:c4:0d:e3:3e:82 (ECDSA)
|_  256 05:be:70:a6:62:83:ca:8e:77:23:35:7b:ba:1b:f1:6a (ED25519)
80/tcp open  http
| http-title: Struts2 Showcase
|_Requested resource was /struts2-showcase/showcase.action
| fingerprint-strings: 
|   GetRequest: 
|     HTTP/1.1 302 
|     Set-Cookie: JSESSIONID=3A181E2A1B8DDCC2DA1C11585883CEA3; Path=/; HttpOnly
|     Location: http://localhost/struts2-showcase/showcase.action
|     Content-Type: text/html;charset=ISO-8859-1
|     Content-Length: 0
|     Date: Sun, 10 Aug 2025 09:27:31 GMT
|     Connection: close
|   HTTPOptions: 
|     HTTP/1.1 405 
|     Content-Type: text/html;charset=utf-8
|     Content-Language: ja
|     Content-Length: 1143
|     Date: Sun, 10 Aug 2025 09:27:31 GMT
|     Connection: close
|     <!doctype html><html lang="ja"><head><title>HTTP
|     Method Not Allowed</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</styl
|   RTSPRequest: 
|     HTTP/1.1 400 
|     Content-Type: text/html;charset=utf-8
|     Content-Language: ja
|     Content-Length: 2227
|     Date: Sun, 10 Aug 2025 09:27:31 GMT
|     Connection: close
|     <!doctype html><html lang="ja"><head><title>HTTP
|_    Request</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></hea
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port80-TCP:V=7.95%I=7%D=8/10%Time=68986604%P=x86_64-pc-linux-gnu%r(GetR
SF:equest,110,"HTTP/1\.1\x20302\x20\r\nSet-Cookie:\x20JSESSIONID=3A181E2A1
SF:B8DDCC2DA1C11585883CEA3;\x20Path=/;\x20HttpOnly\r\nLocation:\x20http://
SF:localhost/struts2-showcase/showcase\.action\r\nContent-Type:\x20text/ht
SF:ml;charset=ISO-8859-1\r\nContent-Length:\x200\r\nDate:\x20Sun,\x2010\x2
SF:0Aug\x202025\x2009:27:31\x20GMT\r\nConnection:\x20close\r\n\r\n")%r(HTT
SF:POptions,513,"HTTP/1\.1\x20405\x20\r\nContent-Type:\x20text/html;charse
SF:t=utf-8\r\nContent-Language:\x20ja\r\nContent-Length:\x201143\r\nDate:\
SF:x20Sun,\x2010\x20Aug\x202025\x2009:27:31\x20GMT\r\nConnection:\x20close
SF:\r\n\r\n<!doctype\x20html><html\x20lang=\"ja\"><head><title>HTTP\xe3\x8
SF:2\xb9\xe3\x83\x86\xe3\x83\xbc\xe3\x82\xbf\xe3\x82\xb9\x20405\x20-\x20Me
SF:thod\x20Not\x20Allowed</title><style\x20type=\"text/css\">h1\x20{font-f
SF:amily:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font
SF:-size:22px;}\x20h2\x20{font-family:Tahoma,Arial,sans-serif;color:white;
SF:background-color:#525D76;font-size:16px;}\x20h3\x20{font-family:Tahoma,
SF:Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}\
SF:x20body\x20{font-family:Tahoma,Arial,sans-serif;color:black;background-
SF:color:white;}\x20b\x20{font-family:Tahoma,Arial,sans-serif;color:white;
SF:background-color:#525D76;}\x20p\x20{font-family:Tahoma,Arial,sans-serif
SF:;background:white;color:black;font-size:12px;}\x20a\x20{color:black;}\x
SF:20a\.name\x20{color:black;}\x20\.line\x20{height:1px;background-color:#
SF:525D76;border:none;}</styl")%r(RTSPRequest,94F,"HTTP/1\.1\x20400\x20\r\
SF:nContent-Type:\x20text/html;charset=utf-8\r\nContent-Language:\x20ja\r\
SF:nContent-Length:\x202227\r\nDate:\x20Sun,\x2010\x20Aug\x202025\x2009:27
SF::31\x20GMT\r\nConnection:\x20close\r\n\r\n<!doctype\x20html><html\x20la
SF:ng=\"ja\"><head><title>HTTP\xe3\x82\xb9\xe3\x83\x86\xe3\x83\xbc\xe3\x82
SF:\xbf\xe3\x82\xb9\x20400\x20-\x20Bad\x20Request</title><style\x20type=\"
SF:text/css\">h1\x20{font-family:Tahoma,Arial,sans-serif;color:white;backg
SF:round-color:#525D76;font-size:22px;}\x20h2\x20{font-family:Tahoma,Arial
SF:,sans-serif;color:white;background-color:#525D76;font-size:16px;}\x20h3
SF:\x20{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#
SF:525D76;font-size:14px;}\x20body\x20{font-family:Tahoma,Arial,sans-serif
SF:;color:black;background-color:white;}\x20b\x20{font-family:Tahoma,Arial
SF:,sans-serif;color:white;background-color:#525D76;}\x20p\x20{font-family
SF::Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}\
SF:x20a\x20{color:black;}\x20a\.name\x20{color:black;}\x20\.line\x20{heigh
SF:t:1px;background-color:#525D76;border:none;}</style></hea");
MAC Address: 06:03:78:20:E3:93 (Unknown)
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5.4
OS details: Linux 5.4
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.22 ms ip-10-0-177-5.ap-northeast-1.compute.internal (10.0.177.5)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.95 seconds

  • 実際にブラウザで見てみると↓でした。
  • テストページをまんま公開しているのは、割とよくある話と聞きますが…。

strutsのテストページ

NSEスクリプト

NSEスクリプト検索

  • 実行すると…CVE-2017-5638が見つかりましたね…。
    • www.jpcert.or.jp
      • …HTTPのリクエストで任意のコードが実行できるって…こりゃだいぶヤバい気がします…。

脆弱性発見

おわりに

  • これ、結構いい教材ですね…。
    • 攻撃用環境、攻撃対象環境をともにモックではなく、仮想マシン(Dockerとかなのかな?)で作ってくれるので、他のコマンドも普通に触れるので違和感がなく、とてもよかったです。
  • 次号のSoftware Designの「はじめてのオフェンシブセキュリティ」の連載も楽しみです。
    • 今回は侵入前の調査でしたが…次回はハッキングだとか。
  • サーバセキュリティコースにもっといろいろあるので、そっちもやってみようかと思います。
  • 自分で攻撃していい環境を作るのはかなり大変なので、これは大変ありがたい感じです。
  • おすすめ!

第71回Software Design (2025年8月号) 輪読&座談会 に参加してきました

いつもおせわになっている第71回Software Design (2025年8月号) 輪読&座談会に参加してきました。

softwaredesign.connpass.com

予習

第1特集 自信を持って決断したい そのリファクタリング、今やるか?見送るか? 適切なタイミングとビジネス面の価値

  • テストがないので、リプレースが多い…という話はやっぱ、結構多いんですね。
    • ただ、技術的にテストを書く環境が整ってない、整えるのも難しい、という現場もあって、それはそれで大変そう…
  • プロダクトマネージャーの方が来てくれていて、現場からリファクタリングよりリプレースをしたいという圧があったりするっていう話が。
    • とても真摯にプロダクトにもメンバーにも向き合ってるんだな、と好感を持ちました。
  • AIアシスタントの話から、一般的なAI利用の話になって、わりと皆さん使われてるようでした。

第2特集 OSの基本のキ 今さら聞けないファイルシステム&ストレージ 見落としがちなデータ管理のしくみを学び直そう

  • 今はいろいろ吸収してくれるものがあって、あんま気にすることがないですよね、という話でした。
    • その話の中でLVMを思い出したので、話してみました。
    • あ…書いていて思い出しました…。NASのHDDからデータを吸い出そうというのにスゴイ苦労していることを…。VMRAIDで使ってたディスクをマウントできない><
  • あと、DockerイメージのOverlayFSも面白い…という話もしました。

特別企画 ITエンジニアのためのメンタルヘルス相談室

  • 白柳さん激推し、みんな読むといいよ!
  • 普通にしていることから、ちょっとした兆候の変化を感じ取ってケアしていく…というのは…結構高等テクだと思ってたんですが…どうやらここに参加のみなさんはそんなでもないみたい。スゴイ…。
    • ただオンラインだと…難しいみたいですね、やっぱり。

はじめてのオフェンシブセキュリティ 【2】ペネトレーションテストに入門してみよう!

  • 北崎さんがアカウントを作ってやってみたそうで、結構いいんだそう。やっぱり試してみようかしら。

SD Staff Room

  • 「文系エンジニア」はどうやってコンピュータサイエンスの基礎を学んでるの?と書いてあったのを取り上げてみました。
    • 参加者は情報工学を学んでた方がほとんどでしたが、自分と同じように情報処理の試験勉強や、PCの拡張などしたりしたときに学んでいました。
    • コンピュータサイエンスを学んでなかった方もいましたが…結局同じように、情報処理の試験勉強や、実際にものを作ったりするなかで、これどうなってるの?と突き詰めながら学んだそうで…あんまり変わらないみたいです。
    • あと…競技プログラミングをやる中で…という方もいたそうで、なるほど、これは新しいって思いました。

最後に

今回も刺激的な会で、ひとりで読むよりずっと学びがありました。 また次回も行こうっと。