はじめに
Windows Fundamentals 1 の備忘録。
本記事は学習記録です。演習環境のターゲット名・IP・フラグは公開していません。
Windows Fundamentals 1
ファイルシステム
FAT(File Allocation Table)
登場時期:1977年(MS-DOS時代から利用)
種類:FAT12 → FAT16 → FAT32 と進化
特徴:
シンプルで古いシステムでも互換性が高い。
小型ストレージ(USBメモリ、SDカード)で今も利用される。
制限:
FAT32の場合、1ファイルあたり 最大4GB まで。
パーティションサイズは最大2TB程度まで。
セキュリティ機能なし(アクセス制御や暗号化は不可)。
HPFS(High Performance File System)
登場時期:1989年ごろ、OS/2用にIBMとMicrosoftが共同開発。
特徴:
FATの限界を克服するために開発された。
長いファイル名(255文字)をサポート。
ファイル断片化が少なく、パフォーマンスが良い。
制限:
Windows NT ではサポートされていたが、Windows 2000以降では非推奨。
現在のWindowsでは実質使われていない。
NTFS(New Technology File System)
登場時期: Windows NT(1993年)以降で標準採用。
特徴:
大容量ディスク対応(数TB〜数百TBまでOK)。
セキュリティ機能:
アクセス制御リスト(ACL)によるユーザーごとのアクセス権管理。
暗号化(EFS:Encrypting File System)。
圧縮機能。
ジャーナリング(ログ)機能があり、クラッシュしてもデータ復旧しやすい。
Windowsのシステムドライブ(C:)は通常 NTFS。
NTFSのアクセス権
Full control(フルコントロール):
すべての操作(削除・権限変更含む)
Modify(変更):
読み取り + 書き込み + 実行 + 削除
Read & Execute(読み取りと実行):
読み取り + 実行
List folder contents(フォルダの内容を一覧表示する):
フォルダー単位の権限で、ファイル名一覧の参照やサブフォルダの辿りを許可する。ただしファイルの内容を読むには Read権限が必要。
Read(読み取り):
ファイル閲覧
Write(書き込み):
ファイルの作成・変更
Special permissions(特殊なアクセス許可):
細かくカスタマイズされたアクセス権
代替データストリーム(ADS)
代替データストリーム(ADS)は、NTFSファイルシステムの機能で、ファイルに追加の隠しデータを保存できる仕組み。セキュリティ上は、攻撃者に悪用される可能性があるため注意が必要。
通常のファイルは「メインデータストリーム(:$DATA)」を持つが、ADSを使うと、同じファイル名の下に隠れた追加データを保存できる。
例えば、example.txt というテキストファイルがあるとした場合。
# example.txtを作成
echo Hello > example.txt
# 代替データストリームを追加
cmd /c "echo Secret > example.txt:hidden"
# ファイル本体の内容を確認
Get-Content .\example.txt
# => Hello
# 特定ストリームの内容を確認
Get-Content .\example.txt -Stream hidden
# => Secret
# ファイルに含まれる全ストリームを列挙
Get-Item .\example.txt -Stream *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\Administrator\Downloads\example.txt::$DATA
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\Administrator\Downloads
PSChildName : example.txt::$DATA
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Users\Administrator\Downloads\example.txt
Stream : :$DATA
Length : 16
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\Administrator\Downloads\example.txt:hidden
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\Administrator\Downloads
PSChildName : example.txt:hidden
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Users\Administrator\Downloads\example.txt
Stream : hidden
Length : 9
example.txt → 通常の内容は「Hello」
example.txt:hidden → 隠しストリームに「Secret」が保存される
表面上のファイルサイズは「Hello」の分しか表示されず、「Secret」が隠れていることは分からない。
Windows\System32 フォルダ
Windowsオペレーティングシステムが含まれるフォルダー。
何が入っているか(要約)
実行ファイル (.exe):cmd.exe、taskmgr.exe、regedit.exe など、Windows の基本ユーティリティ。
ライブラリ (.dll):システムAPIやサービスが依存する共有ライブラリ群。
ドライバやサポートファイル:デバイス制御やカーネル操作に必要なファイル。
コマンドラインツール:ipconfig.exe、sfc.exe、sc.exe などトラブルシュート用ツール。
リソース・ロケール・設定ファイル:言語ファイルやリソースが入る場合あり。
なぜ重要なのか
Windowsのコア機能(起動、ログオン、デバイス管理、ネットワーク、セキュリティなど)のほとんどがこれらのファイルに依存している。
ここを壊すとシステムが起動しなくなったり、機能が失われたりする。
64-bit Windowsでよく混乱すること
System32 = 64-bitバイナリ(64ビットWindows上)
SysWOW64 = 32-bitバイナリ(WOW64互換サブシステム用)
→名前だけ見ると逆に見えるので要注意。32-bitプロセスからアクセスすると自動でリダイレクトされる(ファイルシステムリダイレクション)。
権限と保護
多くのファイルはTrustedInstaller(SYSTEM や TrustedInstaller 所有)に所有されており、削除や上書きには管理者権限+追加操作が必要。
UAC(管理者承認) が働くので、通常ユーザーは書き込み不可。
重要:安易にファイルを削除・置換するとシステムが不安定になり、最悪起動不能になる。
セキュリティ観点
マルウェアはしばしば System32 にファイルを植え付けようとする(隠蔽や永続化のため)。
正規ツールと同名の偽ファイルを置く「DLLハイジャック」などの攻撃もある。
定期的に sfc /scannow や DISM で整合性チェックを行うのが推奨。
※sfcやDISMを実行する際は、よく調べて自己責任で実行をすること。一部環境では非推奨なこともあり。
ユーザーアカウント、プロファイル、権限
lusrmgr.msc
「ローカルユーザーとグループ (Local Users and Groups) 管理ツール」 を開くための管理コンソール。
Windows Home エディションでは利用できず、Pro/Enterprise/Education のみ。
ファイルの場所: C:\Windows\System32\lusrmgr.msc
できること
・ユーザー管理
ローカルユーザーアカウントの作成・削除
パスワードの設定・リセット
アカウントの有効化/無効化
アカウントのプロパティ(ログオンスクリプト、ホームフォルダなど)の編集
・グループ管理
ローカルグループの作成・削除
グループにユーザーを追加/削除
標準のグループ(Administrators, Users, Guests など)のメンバー管理
ユーザーアカウント制御(UAC)
UAC(User Account Control)とはアプリケーションやプロセスが「管理者権限での操作」を実行しようとしたときに確認を求め、不正なプログラムによるシステム変更を防ぐ仕組み。
仕組み
・通常ログイン時
管理者ユーザーでも、普段は「標準ユーザー権限」でアプリを動かす。
(=常にフル権限で動かさないことで被害を最小化)
・アプリが管理者権限を要求したとき
画面が暗転し、「このアプリがデバイスに変更を加えることを許可しますか?」と確認。
→ ユーザーが「はい」を選択すれば昇格して実行。
・標準ユーザーのアカウントの場合
UAC ダイアログが出たとき、管理者のユーザー名とパスワードを入力しないと許可されない。
具体的な例
インストーラーを実行するとき
レジストリを変更するとき
System32などシステムフォルダにファイルをコピーするとき
設定
コントロールパネル → ユーザーアカウント → ユーザーアカウント制御設定の変更
スライダーでレベル調整できる(常に通知する~通知しない)。
既定値は「アプリがコンピューターに変更を加えようとする場合のみ通知」。

タスクマネージャー
Windowsに標準搭載されているシステム管理ツール。
主にプロセス(アプリやサービスの実行状況)やリソース使用状況 を監視・管理するために使われる。
セキュリティや運用管理の観点では、不審なプロセスの確認・停止、パフォーマンス監視、ユーザーセッション管理に役立つ。
主な機能(タブごと)
プロセス (Processes)
実行中のアプリ、バックグラウンドプロセス、Windows サービスが一覧表示。
CPU、メモリ、ディスク、ネットワークの使用率を確認できる。
不審なプログラムが動作していないかの確認に使う。
パフォーマンス (Performance)
CPU、メモリ、ディスク、ネットワーク、GPU などのリソース利用状況をグラフ表示。
リアルタイムで負荷状況を把握できる。
障害対応やキャパシティ管理に役立つ。
アプリの履歴 (App history)
Windows ストアアプリのリソース使用履歴を表示。
ChatGPT曰く、モバイルや省電力管理に近い用途らしい。
スタートアップ (Startup)
Windows 起動時に自動実行されるプログラムを一覧表示。
有効/無効の切り替えが可能 → 不要な自動起動を止めてセキュリティ強化や高速化。
ユーザー (Users)
現在ログインしているユーザーと、そのセッションのリソース消費を表示。
不正アクセスや、誰が負荷をかけているかの調査に使える。
詳細 (Details)
実行中プロセスをより詳細に表示(PID, 状態, ユーザー名, 優先度など)。
高度なトラブルシューティングに利用。
サービス (Services)
Windows サービスを一覧表示(実行中か停止中か)。
サービスの開始・停止・再起動が可能。
その他
なぜかSplit Viewでターゲットマシンを使っていると、定期的に「Connecting to remote machine…」となり接続できなくなったため、kali linuxからRDP接続に切り替え。
kali linuxからRDP接続では安定していた。
RDPがインストールされていなかったため、インストールから接続までのコマンドを記載。
# FreeRDPがインストールされているか確認
which xfreerdp3
# インストール
sudo apt update
sudo apt install freerdp3-x11 -y
# RDP接続(※パスワード指定は履歴に残るので注意)
xfreerdp3 /v:IPアドレス /u:'ユーザー名' /p:'パスワード'
コメント