トリコロールな猫/セキュリティトリコロールな猫/セキュリティ読者になるトリコロールな猫/セキュリティ思いついたことをぼちぼち書いてます。2024-01-04セキュリティエンジニアとして勉強しておいてよかったことはじめに歳をとってきたからか、「セキュリティエンジニアとしてやっていくには何を勉強すればいいのか」ということを聞かれるようになりました。私は体系だった勉強をしておらず言えることがその場ではあまりなかったため、自分が勉強しておいてよかったことをここで改めて思い返してみようと思います。要はアセンブリ言語の勉強です。シェルコードを作る、という目的があったのが私にはよかったです。学生時代はCのポインタはさっぱり理解できませんでしたが、アセンブリ言語をやってよく理解できました。メモリの使い方とかもここで学んだ。Slotやビッグエンディアン、メモリのウインドウシステムの美しさに感動したのを覚えています。便利なツールなぞない時代だったので、ひたすらgdbでbreakしてsiしてxです。」(サンソフトプレスシリーズ)というのがあるんですがもう売ってないみたいですね・・。今だとARMかx86かしか選択肢がほぼないのかな。ARMは命令が固定長ですし、スマホのようなメモリ容量が限られるマシン用な分シンプルに作ってあるはずなので、やるならARMがいいのかも(実態を知らないので違ったらすいません)。x86はアセンブリ言語を初めて勉強するには複雑すぎますが、環境を準備するのは楽だし情報は多いからx86でもいいのかな。pwnable.twで初心者用の問題を解いたやつがあるのでよかったらどうぞ。security.nekotricolor.comnetcatもどきの実装シェルコードを作る過程で、カスタマイズできるバックドアが欲しくなったので作りました。指定したポートをListen状態にし、受信したコマンドを実行してその結果を返すだけのシンプルなプログラムです。C++だったと思います。.NETが出る直前でした。今は改訂増補版が出ているようです・・いやこれも2003年だから相当古いな。I/Oまわりやプロセス間通信を学ぶのにとてもよかったです。ファイアウォールの構築ネットワークの知識はこれでものすごく付きました。NIC三枚挿し・四枚挿しで、それを介してネットワークをつなげるだけでも最初は大変でした。構成としては今ではあり得ないくらいシンプルなものが多かったので、勉強するにはちょうどよかったです。F/W構築とりあえずつないでデフォルトゲートウェイを設定するだけだと、社内LANからインターネットは行けても、インターネットからWebサーバにはつなげません。DMZ上のメールサーバから社内のメールサーバにもつなげない。これを、必要な通信のみ通すように設定していきます。余計なブロードキャストが発生しないように、F/Wには各種サーバの静的なARPテーブルも設定します。いうのを信じられないほど早い納期で連続してやっていた時期があり、この時にネットワークの知識とともに段取り八分を叩き込まれました。納期があまりに早いと、走りながら考えるというのは通用せず、腰を据えてマニュアルを読み込み、どこをどう設定するのかを事前に決めてスケジュールを立ててから本番機を触るようにしないと間に合いません。他機で設定ファイルを作り込み、分単位の線表を引いて何とかやり切った記憶。複雑なやつでマスター一台、スレーブ五台とかだったかな。いまはプライマリとセカンダリというそうですが。A、NS、MXレコードに加え、大量のサブドメインがあったので大量のCNAMEを設定。今は自前ではあんまりやらないですよねえ。インターネットの仕組みみたいなものを理解するのによかったです。メールサーバもたくさん構築しました。qmailってまだあるのかな。こんな課題はどうですかこれら自宅でも学べる課題を考えてみました。Icons8)ラズパイを三台とハブを二台用意し、それぞれF/W、DMZ上のWebサーバ、DNSサーバという超シンプルな構成で、ラップトップからWebサーバの名前解決ができるようにする。できれば全部有線がシンプルでいいですがNIC三枚はラズパイでは難しいのかな。あればラップトップは無線接続で。WebサーバはNXやASLRのような攻撃に邪魔な機能は全てオフ。なんでもいいのでroot権限で動く脆弱なプログラムと、実装したnetcatもどきを置いて、ラップトップからWebサーバ上でバックドアを作って/etc/passwdをcatする。静的なARPテーブルやメールサーバはいらない気がしますが、ARPに関してはブロードキャストされているところをパケットキャプチャで見てみてほしいなあ。間違ったARPテーブルを設定してみて、なんも通信できねーっていう経験もしてほしいです(やった)。一度読んでみて、さっぱり分からんとキレながらこの課題をなんとかこなして、「最初っからこう書いてくれれば分かったのに・・」と思いつつもう一度読んで、「いや書いてあるじゃん」てなってください(なった)。おわりに今は全てがリッチすぎて、基礎を学ぶのは逆に難しくなっている気がします。ネットワーク構築はクラウドばかりだし、マルウェア解析もデコンパイルしてソースコードを読むことの方が多いみたいだし。業務では意識することはあまりないかもしれませんが、つまづくことがあるとすれば、この手の基礎を押さえていないことが原因かもしれません。ネットワークはもうちょっとやると良くて、たとえばVPNとWifiのAESとTLSの違いとかはぜひパケットを見て実感してほしいし、HTTPとQUICの違いを見てほしいし、IPフラグメンテーションも実際のパケットを見て感動してほしい。課題のARPのブロードキャストもそうですけど、要はパケットを眺めることでOSIの七階層をきちんと理解してほしいというか。元気な人ならイベントのNOCとかやってみるといいかもしれませんね。読者になる関連記事2020-02-20pwnable.twのorwのwrite-up。startのwrite-up。CTFのバイナリ解析ではまず何をすればいいのかも...pwnable.twのスコア100の問題、「start」のwrite-upです。3リンクトリコロールな猫はてなブログをはじめよう!nekotricolorさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。