Built To Last

廃れない計算機科学の知識体系を残す

mDNSとDNS-SDのエクスプロイトー事前知識①:mDNSとは

mDNS ネームサーバーのないLAN内で名前解決を可能にするプロトコル mDNS単体で使うこともできるが、DNS-SDと使われることが多い IPマルチキャストを使い、UDPを用いて送信される。クエリもレスポンスもマルチキャストでLAN内(スイッチ内、サブネット内)の…

Double Tagging Attackやってみた② ー アクセスリンクからの攻撃

はじめに ー 前記事の内容と本記事で扱う実験内容について 今回は前記事に引き続いて、レイヤー2での攻撃手法であるDouble Tagging Attackに関する記事です。前記事では、Double Tagging Attackをトランクリンクで繋がれた攻撃ホストから行い、通常ではアク…

Double Tagging Attackやってみた① ー トランクリンクからの攻撃

事前の準備〜知識収集 IEEE 802.1Qとは Dot1qとも呼ばれるこのプロトコルはVLAN taggingという仕組みを定義している。VLAN taggingはフレームにVLANタグを付与することで、ネットワークを流れるフレームは必ず一つのVLANに所属していることを保証する仕組み…

スイッチスプーフィングをやってみる

はじめに〜事前知識 多くの組織は、ネットワークを分割し、 ①セキュリティ要件の低いアセット ②セキュリティ上重要なアセット に分けることをして、セキュリティ向上を図る。 ②にIoTのネットワークが含まれていたとしよう。例えば、監視カメラとリモート操作…

コンピューターサイエンスの未来を作る技術について ー IoT(関連技術編)

IoTの関連技術 今後IoTとの結びつきが強くなる関連技術を紹介します。 ブロックチェーン ー IoTデバイス間のセキュアなデータ交信を可能に IoTを用いて何らかのシステムを実現する際、真っ先に上がる課題が「信用性と安全の確保」です。「IoTデバイスが他の…

コンピューターサイエンスの未来を作る技術について(はじめに)

こんにちは、ヤマダです。 本記事から始まる「コンピューターサイエンスの未来を作る技術について」では、 2025年~の近い未来を見据えた「取り組む価値のある技術」について執筆していこうと思います。 私自身20代の終わりが近づきつつも、フラフラとしてい…

HackTheBox Responderを理解する

HackTheBox上で公開されているResponderボックスのエクスプロイットが難しかったので、理解する。 とりあえずnmapで全ポートスキャン。 HTTPが空いているので、ブラウザからアクセスする。 Server Not Connectedエラーが出るので、Wiresharkでパケット見てみ…

メモリの仮想化① 〜導入

OS

前回までは、OSを理解する上で重要な三要素の一つの「仮想化」を、CPUに適用した際、必要となるポリシーや設計基盤について議論してきた。 今回からは、メモリの仮想化について議論する。 メモリを仮想化することの目的は、 OSを理解するための3つの構成要素…

CPU仮想化④ 〜複数あるプロセスの中でどれを優先すべきか?ーCFS編

OS

前回に引き続き、複数あるプロセスにどのようにCPU時間を振り分けるか、のルール(ポリシー)としてメジャーな手法を取り上げよう。今回は、Linuxで用いられているCompletely Fair Schduler(CFS)である。 スケジューリングにおいて重要なことは公平性とそ…

CPU仮想化③ 〜複数あるプロセスの中でどれを優先すべきか?ーMLFQ編

OS

今回は、CPUの仮想化を理解する上での2つの観点のうち、2つ目の「複数あるプロセスの中でどれを優先すべきか?」、というポリシー(方針)の話をしようと思う。 ここで、良いスケジューラを実装するために重要なこととして、パフォーマンスの他に公平性(F…

CPU仮想化② 〜どのようにtime sharing of CPUを行うか?〜

OS

今回は、「どのようにTime Sharing of CPUを行うか」という点について考えていこうと思う。 「どのようにTime Sharing of CPUを行うか」を理解するということは、「Context Switchがどう行われるか」を理解することである。 Context Switchの話に移る前にい…

CPU仮想化① 【導入】

OS

CPUの仮想化の話に入る前に、プロセスの話をしなければならない。 プロセスとは、プログラムを実行した際にOSに作られる抽象物のことである。プロセスとプログラムは一対一の関係とは限らず、一つのプログラムから複数のプロセスをつくることができる。実際…

OSを理解するための3つの構成要素

OS

Q. 「OSとはなにか?」 A. OSとは、CPUやメモリ、ディスクなどのリソースを仮想化(Virtualize)することで、コンピュータを使いやすくするものである。 上図のように、異なる(または同一の)複数ユーザが1つのコンピュータを扱うときに、ユーザが使うメー…

このブログについて

当ブログの目的は、「廃れない計算機科学の知識体系を残すこと」です。 そのため、当ブログで扱われる分野は、OS、ネットワークなどの低レイヤ、またデータ構造、アルゴリズムに集中します。セキュリティやAIも扱っていくつもりです。 同理由で、各プログラ…