HackMD
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    [HACK#22 パッチ適用状況のチェック](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack22-%E3%83%91%E3%83%83%E3%83%81%E9%81%A9%E7%94%A8%E7%8A%B6%E6%B3%81%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF) [HACK#23 自動更新を構築するグループポリシーの利用](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack23-%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E5%88%A9%E7%94%A8) [HACK#24 オープン状態のファイルとオープンしているプロセスをリストする](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack24-%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E7%8A%B6%E6%85%8B%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A8%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E3%83%AA%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B) [HACK#25 稼働中のサービスとオープンされているポートのリスト取得](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack25-%E7%A8%BC%E5%83%8D%E4%B8%AD%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A8%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E5%8F%96%E5%BE%97) [HACK#26 システム監査の設定](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack26-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%9B%A3%E6%9F%BB%E3%81%AE%E8%A8%AD%E5%AE%9A) [HACK#27 自動起動プログラムの列挙](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack27-%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%88%97%E6%8C%99) [HACK#28 イベントログのセキュア化](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack28-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%AD%E3%82%B0%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%E5%8C%96) [HACK#29 ログファイルの最大サイズの変更](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack29-%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9C%80%E5%A4%A7%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E5%A4%89%E6%9B%B4) [HACK#30 イベントログのバックアップ](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack30-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%AD%E3%82%B0%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97) [HACK#31 デフォルト共有の解除](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack31-%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E5%85%B1%E6%9C%89%E3%81%AE%E8%A7%A3%E9%99%A4) [HACK#32 一時ファイルフォルダの暗号化](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack32-%E4%B8%80%E6%99%82%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96) [HACK#33 EFS上のバックアップ](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack33-efs%E4%B8%8A%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97) [HACK#34 シャットダウン時におけるページングファイルの初期化](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack34-%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E6%99%82%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96) [HACK#35 無期限パスワードのチェック](https://github.com/careerbeat/dit-ehime/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3HACKS-Wiki-%E7%AC%AC%E4%BA%8C%E7%AB%A0-Windows%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3#hack35-%E7%84%A1%E6%9C%9F%E9%99%90%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF) # HACK#22 パッチ適用状況のチェック ## 概要 - HTNetChkを用いてWindowsサーバーに最新のパッチが適用されているかを確認する - Windowsには信頼性の高いスクリプト言語やリモートアクセス機能が標準搭載されていないため、パッチ適用の自動化に適さない - 各コンピュータごとにどのパッチを適用すればよいかを把握しなければならないため、非常に手間がかかる ## 背景 Unixシステムと同じくWindowsシステムでも最新のパッチを適用しておかなければ、未修正のOSのバグなどを利用してウイルスに感染させられる可能性がある そこで、常に最新のパッチが適用されている状態にするためには、管理下のコンピュータのパッチ適用を自動化しておかなければならない<br> ### Windows Updateの自動更新 - Windowsシステムの最新のパッチを自動でダウンロードして適用する機能 - しかし、下記のパッチに設定されている重要度によって、自動でダウンロードやインストールが行われない場合がある <pre> [重要度] ・重要:セキュリティの脆弱性やシステムの障害を修正する更新プログラムなどの緊急性が高いもので、自動的に更新される ・推奨:機能の追加やシステムの動作改善など緊急度の低い更新プログラムで、自動更新の対象に含まれないことがある ・オプション:手動でインストールする必要のある更新プログラム </pre> 上記のように「重要」以外のパッチは、その都度手動でインストールしないと累積する一方になる 複数台のコンピュータを管理している場合、コンピュータごとに適用するパッチが違ったりして手動インストールは相当な負担になる そこで、「Microsoft Baseline Security Analyzer」の「HFNetChk」を用いて、パッチの適用状況の確認を自動化する ## 前提知識 HTNetChkは、OSやアプリケーションに依存せずにパッチの適用状況をリモートから確認できる 確認だけで実際に適用するところまではできないが、一連のアップデートにかかる作業を大幅に削減できる 現在HTNetChkの機能は、「Microsoft Baseline Security Analyzer」に引き継がれているので、以下ではMBSAを用いた方法を紹介する ## 確認方法 本と同じ「Microsoft Baseline Security Analyzer」を利用しますが、バージョンアップしてるので、バージョンアップした方の内容を説明します。 まず、下記URLから「Microsoft Baseline Security Analyzer 2」をダウンロードします https://www.microsoft.com/ja-jp/download/details.aspx?id=7558 ※選択肢は色々ありますが言語とビットの違いですので、環境に合ったものを選択してください。(今回は日本語の64bitである「MBSASetup-x64-JA.msi」を選択しました) ダウンロードしたファイルを実行し、画面指示に従ってインストールしてください。 インストールが完了すると、デスクトップにアイコン「Microsoft Baseline Security Analyzer 2.3」が作成されますので、実行してください。 本は全てコマンドラインで実行していますが、バージョンアップしたことにより、GUIでの操作が可能になりました。 例えば、コマンド「mbsacli /hf」というコマンドはローカルシステムのセキュリティアップデート適用状況を調べるコマンドですが、現在は「単一のコンピュータをスキャンする」を選択し、コンピュータ名をこのマシンにすることで調べることができます。 また、本ではオプション「-h」「-i」「-r」を付けてNetBIOS名、IPアドレス、複数指定等をしていますが、GUIでは「複数のコンピュータをスキャンする」や別で入力する欄が用意されているので、簡単に行えるようになりました。 これを活用してWindowsに最新のパッチが適用されているかをチェックしましょう。 # HACK#23 自動更新を構築するグループポリシーの利用 ## 概要 - グループポリシーを用いてActive Directory環境下のシステムの自動更新を構築する - 数多くのWindowsシステムに対して個別に自動更新を設定していると、設定の違いが生じたりして非常に手間がかかる ## 背景 複数のWindowsシステムを管理する場合、それぞれの自動アップデートの設定を同じにするのは非常に手間がかかる また、人為的ミスなどでそれぞれの設定に差異が生じる可能性がある 設定に差異が生じていると、あるコンピュータでは防御できた脅威でも、別のコンピュータでは防御できなかったという事象が発生してしまう そこで、管理するすべてのWindowsシステムをActive Directory環境下において、グループポリシーを設定すると、すべてのコンピュータ間で差異のないアップデートの設定を低負荷で行うことができる ## 前提知識 グループポリシーはユーザーやコンピュータに対する設定を一元的に管理するためのActive Directoryの仕組みである Active DirectoryはWindows Serverに認証の機能を提供するものである Active Directoryで1度認証を行うと、Active Directoryで認証されたユーザーがアクセスできる範囲(ドメイン)に自由にアクセスできる そのドメイン内のWindowsシステムに対して、グループポリシーで自動更新に関する設定を一元して行う ## 確認方法 Windows Server環境を用意するのが難しいため、省略させて頂きます。 # HACK#24 オープン状態のファイルとオープンしているプロセスをリストする ## 概要 - Handleを用いてファイルのアクセス状況を監視して不審な挙動をしていないかを監視する - Windowsの標準ツールには、あるプロセスがどのファイルを開いていて、それが何者なのかを知ることができるものがない ## 背景 コンピュータがウイルスやマルウェアに汚染されると、それらはプロセスを生成する Windows以外のOSであれば、そのプロセスを開いているファイルを突き止めることでプロセスが何者かを知ることができる しかし、Windowsではプロセスを開いているファイルを突き止めるためのツールが標準で用意されていない つまり、プロセスの一覧しか見ることができないため、不審なプロセスかどうかの判断が難しい そこで、「Handle」を用いてLinuxのlsofコマンドとよく似た実行結果を得て、プロセスの詳細を取得する<br> ※lsofコマンド:ポートやプロセスID、プロセス名からファイルがオープンしている情報を表示する ## 前提知識 Handleはスレッド、イベント、セマフォ(後何人の人が同時に使えるかを示した値)などのリソース情報を表示できる 上記に加えて、使用されているレジストリキーやIOCompletion構造体(IO操作の完了待ち状況)も表示できる Linuxでいうとlsofコマンドのようなものである ## 確認方法 下記サイトより「Handle」をダウンロードする - https://technet.microsoft.com/ja-jp/handle ダウンロードしたファイルを解凍したら、コマンドプロンプトを立ち上げます。 解凍したファイルの所までディレクトリを移動したら準備完了です。 「handle」と打つと、現在システム上で開かれている全てのファイルハンドルのリストを表示する ※「Handle License Agreement」の画面が表示されたら「Agree」しましょう。 ファイル名を指定して実行すると、そのファイルに現在アクセスしているプロセスのリストが表示される <pre> C:\Users\dojo\Downloads\Handle\Handle>handle C:\Windows\Fonts\meiryo.ttc Nthandle v4.1 - Handle viewer Copyright (C) 1997-2016 Mark Russinovich Sysinternals - www.sysinternals.com explorer.exe pid: 5564 type: File 798: C:\Windows\Fonts\meiryo .ttc slack.exe pid: 3900 type: File 60C: C:\Windows\Fonts\meiryo .ttc slack.exe pid: 2952 type: File 448: C:\Windows\Fonts\meiryo .ttc (以下略) </pre> 「-p」を付けてプロセス名を指定すると、そのプロセスが開いているファイルだけを表示させることもできます。 さらに、プロセス名の後ろに文字列を指定することで、その文字列を含むものだけが表示されるようになります。 このように様々な絞り込みをすることで、手早く調査対象を捜索することが可能になります # HACK#25 稼働中のサービスとオープンされているポートのリスト取得 ## 概要 - FPortを用いて稼働中のサービスやオープンされているポートを調査する - 不要なサービスが稼働していたり、不要なポートが開いていると攻撃者の踏み台になる - UNIXではnetstatコマンドなどで手軽に確認できるが、Windowsではその手段がない ## 背景 攻撃者はオープンしているポートを調査(ポートスキャン)して、そこからコンピュータに攻撃をしようと試みる その攻撃を防ぐためには、オープンしているポートを把握して、不必要であればポートをクローズしておくべきである Unixでは、netstatコマンドやlsofコマンド(HACK #8参照)でオープンしているポートを調査できる しかし、Windowsにはデフォルトでオープンしているポートを調査できる手段がない そこで「FPort」というツールを導入してオープンしているすべてのポートのリストを取得する ## 前提知識 FPortを実行すると、リスンしているしていないに関わらず、現在システムがオープンしている全てのポートリストを取得できる ## 確認方法 下記のOSしかサポートしておらず、用意することが難しいので、省略させて頂きます。 - Windows NT4 - Windows 2000 and Windows XP # HACK#26 システム監査の設定 ## 概要 - 不審な挙動の監査機能を有効にして不正アクセスを検知する - デフォルトでは無効になっている機能なので、自分で設定しないと不正アクセスを検知できない ## 背景 不正アクセスを試みようとする悪意あるユーザーは、何度もログインの試行を繰り返して認証を成功させようとすることがある その試行の途中のログイン失敗の履歴は、動作を監視してログを記録するようにしていれば簡単に検知できる しかし、Windowsシステムでは、デフォルトでログインの成功/失敗を記録する設定が有効になっていない また、ログインに限らず、あるファイルにアクセスされたなどの履歴も記録されない設定になっている そこで、「監査ポリシー」を適切に設定して、不正アクセスが発生したことを見逃さないようにする ## 前提知識 監査機能を有効にすることでログイン失敗、アカウント管理などのシステムイベントに加えて、セキュリティポリシーの変更もログに記録することができる 上記によって不正アクセスを追跡する手がかりを得られる ## 確認方法 まず、システム監査の設定をするためのプログラムを起動します。 「コントロールパネル」>「システムとセキュリティ」>「管理ツール」の順でクリックし、「ローカル セキュリティ ポリシー」をダブルクリックすれば起動します。 そして「ローカルポリシー」を選択し、「監査ポリシー」をクリックします。 ※本の図では「監査ポリシー」ではなく、「セキュリティオプション」を選択した時の画面になっているので、間違えないようにしましょう。 すると、各監査が一覧で表示され、右側の「セキュリティの設定」欄で監査の設定が 確認できます。デフォルトでは全て「監査しない」になっているので、ダブルクリックして、監査を有効にしましょう。 「アカウントログオンイベントの監査」を選択した場合、「成功」と「失敗」チェックボックスがあるので、チェックを入れると、それぞれログオン成功時、失敗時のログを記録するようになります。 ここで有効にしたログは「Windowsログ」の「システム」に記録されるようになるので、ログインを試みて、ログが記録されているか確認してみましょう。 # HACK#27 自動起動プログラムの列挙 ## 概要 - Autorunsを用いて自動起動するプログラムを見つけて不要なものは自動起動しないようにする - 不要なサービスが大量に起動していると、スパイウェアによるシステムへの悪影響を受けかねない(Webブラウザの設定を変更してしまうなど) ## 背景 Windowsは、システムブート時やユーザーログイン時に自動的に起動されるプログラムがある(スタートアッププログラム) スタートアッププログラムはユーザーが意図して起動させないため、その存在に気づかないこともある そのため、知らないうちにコンピュータに仕込まれていた(Web経由など)「スパイウェア」が常時起動しているかもしれない<br> ※スパイウェア:ユーザーの同意を適切に得ずに、広告の表示や個人情報の収集、コンピュータの設定変更などを行うソフトウェア そのような理由から、Windowsが自動で起動するプログラムを把握し、不審なプログラムが見つかった場合は無効化する必要がある そこで、「Autoruns」というツールを用いて、除去するのにレジストリの編集が必要となる厄介なスパイウェアを無効化する ## 前提知識 Autorunsは自動起動されるプログラムの一覧が取得でき、フィルタを使用してそれらを絞ることもできる また、自動起動の許可/不許可の設定も可能である ## 確認方法 下記サイトより「Autoruns」をダウンロードします - https://technet.microsoft.com/ja-jp/sysinternals/bb963902.aspx ダウンロードしたファイルを解凍し、32bitなら「Autoruns.exe」、64bitなら「Autoruns64.exe」を起動します ※本では「autorunsc.exe」を実行すると記載されていますが、それはコマンドラインで行うためのexeファイルなので、間違えないようにしましょう。 exeファイルを実行すると、「Autoruns」の画面が表示され、一覧にリストアップされているのが自動起動されるプログラムになります。 チェックボックスのチェックを外すことで、対象のプログラムの自動起動を取り消すことができます。 また、上のタブを選択することにより、自動起動されるプログラムにフィルタを掛ける事ができます。 例えば、本に書いている通り「Login」タブを選択すると、ログイン時に自動起動されるプログラムがリストアップされます。 このようにフィルタリングしてスパイウェアと思われるプログラムを調査し、自動起動しないように設定しましょう。 # HACK#28 イベントログのセキュア化 ## 概要 - イベントログに対して適切にACLを設定してログ改ざんなどを防ぐ - イベントログのACLが適切に設定されていないと不正アクセスしたときの痕跡が消されたりする脆弱性を生んでしまう ## 背景 Windowsシステム上のログはイベントビューアで閲覧することができる イベントビューアで閲覧することができるログは、それぞれログファイルとして保存されている そのログファイルはACL(Access Control List)によってアクセス制限を設定できる アクセス制限によって、限られたユーザーのみがログファイルにアクセスできるようになる そのアクセス制限が適切に行われておらず、信頼できないユーザーのアクセスが許可されていた場合、ログの改ざんを可能にして不正アクセスを容易にするなどの脆弱性を生んでしまう そこで、アクセス制限の設定でAdministratorsとSYSTEMのみがログファイルにアクセスできるようにする ## 前提知識 テキストでは、レジストリ値を変更してACLを設定する方法が記載されているが、ファイルやフォルダのプロパティから簡単に設定できる レジストリ値の変更は十分な知識を持って行わないと最悪の場合OSが起動しなくなったりするので、下記で紹介するプロパティで設定する方法を推奨する ## 確認方法 本の環境は[Windows2000]ですが、私の環境は[Windows8]なので、[Windows8]に置き換えて説明します。 まず、[administrator]の権限を持ったユーザーでログインします。 そして、本に記載されているセキュア化すべきログファイルは「C:\Windows\System32\config\」に格納されているので、その中の拡張子が「.LOG」となっているファイルを右クリックしプロパティを開きます。 そして、「セキュリティ」タブを開き、アクセス許可を変更するために「編集」ボタンを押します。 [Administrators]と[SYSTEM]と現在ログインしている管理者(私の場合は[dojo])以外のすべてのユーザーの権限を削除します。 これで、管理者とシステム以外はアクセスできなくなっているはずですので、確認してみましょう。 管理者以外のアカウントでログインします。(ユーザーの追加は「コントロールパネル」 > 「ユーザーアカウントとファミリーセーフティ」 > 「ユーザーアカウント」 > 「別のアカウントの管理」でGuestユーザーをオンにすると簡単にできます。) そして権限を設定したログファイルを開こうとすると、管理者のパスワードを求められるようになっていればOKです。(「.LOG」ファイルが格納されている「config」フォルダ自体にアクセス制限が掛っている場合もあるので、確認してみましょう。) # HACK#29 ログファイルの最大サイズの変更 ## 概要 - ログファイルの最大サイズを適切に設定して、重大なインシデントが発生した場合などの重要なログを取りこぼさないようにする - 古いWindowsではデフォルトのログファイルの最大サイズが小さくなっており、あまりに大量のログを記録しようとすると過去分が消えてしまう ## 背景 ログはコンピュータへの不正アクセスや障害を知るために非常に重要な手がかりとなる そのため、取りこぼしの無いようにすることが最重要課題である もし、ログの一部やすべてが失われてしまうと、不正アクセスや障害の原因を追究できなくなったり、最悪の場合その発生を把握できなくなる ### ログの取りこぼしを防ぐ方法 Windowsの各種ログファイルにはそれぞれにプロパティでファイルサイズの上限が設定されている つまり、ファイルサイズが上限に達すると過去のログは消去されていく ファイルサイズが上限に達することによるログの消去を防ぐためには、余裕を持ったファイルサイズの上限を設定しなければならない ## 前提知識 Windows8ではテキストに記載されている必要最低限以上の最大サイズがデフォルトで設定されている ## 確認方法 ログの設定をするプログラムは「イベントビューア」なので、「コントロールパネル」 > 「管理ツール」 > 「イベントビューア」で起動しましょう。 起動したら左側のメニューに「Windowsログ」があるのでそれを開くと各種ログが表示されます。 あとはひとつずつ、ログを右クリックでプロパティを開き、「最大ログサイズ」を確認しましょう。 本では1MB以上にするべきと書かれていますので、それ未満の場合は修正するようにしましょう。 ちなにみ、バージョンによってデフォルトのログファイルの最大サイズは異なり、[Windows8]の場合は20MBあるので、一応どのバージョンでも確認するようにしましょう。 # HACK#30 イベントログのバックアップ ## 概要 - サーバーのイベントログのバックアップを取って、トラブルシューティングなどに役立てる - サービスの挙動が不正かどうかを判断するためには、過去長期間のログが必要となることもある ## 背景 HACK #29でも述べた通り、不正アクセスや障害を検出するためにはログが必要不可欠である 不正アクセスの場合、長期間をかけてログインの試行を繰り返す場合があるためそれを検出するためには長期間のログが必要となる ログファイルの最大サイズを十分大きくすれば長期間のログを記録できるが、システムドライブの容量を占有してしまう新たな弊害が発生してしまう そこで、ログファイルの最大サイズに達したときにバックアップを取ったり、不要になったログをクリアするなどの設定を行って、システムドライブの容量を占有せずに長期間のログを保存する ## 前提知識 Windows標準のイベントビューアの機能を用いてもログの保存やクリアは可能だが、非常に手間がかかり最大サイズ到達前にログを保存できなかったということも発生するかもしれない ここでは、スクリプトを作成してログを自動でバックアップする方法を紹介する ## 確認方法 本では記載されているスクリプトを作成し、実行することでイベントログのバックアップを可能にしているが、[Windows8]であれば、ログファイルのサイズが上限に達した時、自動でログをアーカイブ(保管)することができる。 前述した通り、私は[windows8]を使用しているので、今回はその方法について説明します。 方法は簡単で、[HACK#29]と同じ手順でログのプロパティを開きます。 そして、下部に「イベントログサイズが最大に達したとき」にという項目があり以下の選択があるので、「イベントを上書きしないでログをアーカイブする」を選択します。 - 必要に応じてイベントを上書きする(最も古いイベントから) - イベントを上書きしないでログをアーカイブする - イベントを上書きしない(ログは手動で消去) これにより、自動でイベントログがバックアップされます。 バックアップされたログの一覧を見るにはコマンドプロンプト「C:\Windows\System32\winevt\Logs」で以下を実行します <pre> C:\Windows\System32\winevt\Logs>dir Archive-* </pre> ファイル名は「C:\Windows\System32\winevt\Logs」の配下に「Archive-[イベント名]-YYYY-MM-DD-HH-MM-SS-NNN.evt」といった形式で保存されますので、上記のように「Archive-」の後をワイルドカードで指定することにより抽出できます。 また、保存したログファイルを閲覧するには「イベントビューア」のメニュー「操作」で「保存されたログを開く」を選択し、保存したログファイルを選択することで閲覧できます。 # HACK#31 デフォルト共有の解除 ## 概要 - レジストリを編集して、デフォルトで共有可能になっている```%SystemRoot%```や論理ドライブを共有無効にする - システムの動作に重要な部分の共有は、管理者権限のみアクセス可能であってもセキュリティホールとなりうるので停止させるべきである ## 背景 Windowsのデフォルト設定では%SystemRoot%フォルダやシステムの各論理ドライブ(Cドライブなど)も共有可能な設定になっている<br> ※%SystemRoot%フォルダ:Windowsの本体となるファイル群が置いてあるフォルダ %SystemRoot%フォルダやシステムの各論理ドライブは、Administrator権限のみからアクセス可能になっていても、もし共有してしまうとセキュリティホールになる可能性がある セキュリティホールになってしまうと、コンピュータに侵入された際、システムの動作に必要なファイルに変更を加えられて、正常な動作ができなくなってしまうかもしれない そこで、%SystemRoot%フォルダやシステムの各論理ドライブのような重要な場所は、レジストリを編集して共有ができないようにしておくべきである ## 前提知識 デフォルトの共有を無効化するには、下記のレジストリキーを編集する <pre> HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\LANMANSERVER\PARAMETERS </pre> ### HKEY_LOCAL_MACHINE - PCのシステム全体の情報を含む - 具体的にはPCに接続されている各種ハードウェアに関する情報を含む - サブキーにはPCに接続された各種ハードウェアリスト情報、ドライバ情報、プラグアンドプレイ情報、Windowsの基本設定情報を含む 下記にWindows8における設定・確認方法を解説する ## 確認方法 レジストリキーの設定画面を開くには「Ctrl + r」で「ファイル名を指定して実行」画面を開き、「regedit」と入力します。 すると「レジストリエディター」が開かれるので、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters」を開きます。 すると、右側にパラメータの一覧が表示されるので、右クリックを押して「新規」>「DWORD値」をクリックします。 今回は[Windows8(Client側)]なので、名前を「AutoShareWks」にします。 もし[Windows Server(Server側)]の場合は名前を「AutoShareServer」にします。 そして作成したら、そのパラメータを右クリックし、「修正」をクリックします。 画面が開かれたら、「値のデータ」を「0」にします。 これで設定は完了です。適用する前に一度デフォルトで共有されているフォルダを確認してみましょう。 <pre> C:\Users\dojo>net share 共有名 リソース 注釈 ------------------------------------------------------------------------------- C$ C:\ Default share IPC$ Remote IPC ADMIN$ C:\Windows Remote Admin コマンドは正常に終了しました。 </pre> では再起動して適用させてみましょう。 <pre> C:\Users\dojo>net share 共有名 リソース 注釈 ------------------------------------------------------------------------------- IPC$ Remote IPC コマンドは正常に終了しました。 </pre> このようにデフォルトで共有していたフォルダは表示されなくなったのでOKです。 # HACK#32 一時ファイルフォルダの暗号化 ## 概要 - 一時ファイル(テンポラリファイル)を暗号化して、他人に情報をのぞかれないようにする - 多くのWindowsアプリケーションは動作中にテンポラリファイルを作成する - テンポラリファイルはプログラム終了時に必ず消去されるものではない - 共用のコンピュータ上にテンポラリファイルが残っているとセキュリティ的によろしくない ## 背景 ### テンポラリファイル(一時ファイル)とは - アプリケーションが作業中のデータの保存のために一時的に作るファイル - メモリ上に格納しきれない巨大なファイルの一部を一時待避させたり、編集中のファイルのバックアップを取ったり、クリップボードの内容を保管しておくなどの用途に用いられる - ほとんどの場合はソフトウェアの終了と同時に消去される しかし、ソフトウェアの終了と同時に消去されない場合もある テンポラリファイルが消去されずに残っていると、共用のコンピュータを使用している場合、他人にテンポラリファイルを開かれて重要な情報を盗み見られる可能性がある そこで、テンポラリファイルが格納されているフォルダを暗号化して、本人以外は閲覧できないようにする ## 前提知識 Windows8のテンポラリファイルは下記に格納されている <pre> C:\Users\ユーザー名\AppData\Local\Temp </pre> 「Temp」フォルダのプロパティから暗号化属性を設定してテンポラリファイルを暗号化する ## 確認方法 ではまず、暗号化対象である「Temp」フォルダがあるディレクトリ「C:\Users\dojo\AppData\Local\」まで移動しましょう。 そして、「Temp」フォルダを右クリックし、「プロパティ」 > 「詳細設定」を選択します。 すると、「属性の詳細」という画面が表示されるので、下の方にある「内容を暗号化してデータをセキュリティで保護する」にチェックを入れます。 そしてOKを押して行くと「属性変更の確認」画面が表示されるので、ラジオボタン「このフォルダおよびサブフォルダとファイルに変更を適用する」を選択してOKを押します。 ※本来この作業は開いているアプリケーションを全て閉じてから行うべき作業ですが、その場合、暗号化に非常に時間が掛かるので、今回はしなくて良いです。ただ、その場合「属性の適用エラー」が発生するので、「すべて無視」を選択してください。 適用が完了して、「Temp」フォルダが緑色になり、暗号化に関するポップアップメッセージが表示されれば完了です。 # HACK#33 EFS上のバックアップ ## 概要 - EFSの秘密鍵と証明書をHDDの故障などで失ったときに、回復エージェントによりファイルを復元する - EFSによる暗号化はコンピュータ上のデータを漏えいなどの脅威から守ることができる - しかし、EFSで暗号化されたファイルの複合化には秘密鍵が必要なため、それを失った場合は複合化できない ## 実践 ### EFS(Encrypting File System) - 権限のない人がファイルを読めないように暗号化の機能を提供する - 個々のファイルを暗号化するたびに個別のファイル暗号鍵(File Encryption Key:FEK)を生成する - FEKはユーザー自身のEFSの公開鍵で暗号化されていて、複合化にはユーザーのEFSの秘密鍵が必要である ### 回復エージェント - 特権レベルのアカウントである - FEKをユーザー自身のEFSの公開鍵と回復エージェントの公開鍵の暗号化する - 回復エージェント自身のEFSの秘密鍵を用いてFEKで暗号化されたファイルを復号できる 回復エージェントによるファイルの復元について記載したが、EFSの公開鍵/暗号鍵と証明書は事前にバックアップをとっておくべきである 回復エージェントによるファイルの復元はバックアップをとっていなくてどうしようもない状況のときに行う 下記にEFSの公開鍵/暗号鍵と証明書のバックアップ方法と回復エージェントによるファイルの復元について解説する ### 確認方法 HACK#32で行った暗号化が「EFS暗号化」になるのですが、キーのバックアップはフォルダ単位で行えません。そのため、まずフォルダ以外のファイルをHACK#32と同じ手順で暗号化します。 次に、その暗号化したファイルを右クリックし、「プロパティ」>「詳細設定」>「詳細」の順で開いていきます。 そして、「{ファイル名}へのユーザーアクセス」という画面が開かれたら、ユーザーを選択して、「キーのバックアップ」を押します。 「証明書のエクスポートウィザード」という画面が表示されるので、画面指示に従って進めていきます。(基本的にはそのまま「次へ」を押していけばOKです) パスワードの入力を求められたら任意のパスワードを入力します。 そのフェーズが終わり、「証明書のエクスポートウィザードの完了」というメッセージが画面に表示されれば完了です。 バックアップしたキーは「証明書のエクスポートウィザードの完了」の「ファイル名」の箇所にフルパスが記載されています。 ただ、バックアップしたキーは同じHDD内に存在しているので「HDDの故障」というケースを想定した場合、意味がありません。 そのため、必ずUSBメモリなどの別メディアに移すようにしてください。 #### [EFSの秘密鍵が破損したときのリストア方法] 「回復エージェント」として割り当てられているユーザーでログインをし、暗号化を解除する([内容を暗号化してデータをセキュリティで保護する]のチェックを外す)ことで、秘密鍵が破損していても、暗号化を解除することができます。 # HACK#34 シャットダウン時におけるページングファイルの初期化 ## 概要 - ページングファイルをシャットダウン時に初期化してページングファイル内の秘匿情報の読み取りを防ぐ - ページングは実メモリ容量を超えた場合に使用頻度の少ないメモリ空間の内容をディスク領域(仮想メモリ)に書き出す機能である(VMM:仮想メモリ管理) - 秘匿情報が書き出された場合、セーフガードが無効になっていると他者から読み取られてしまう<br> ※セーフガード:ページングファイルの読み込み防止機能 ## 背景 ### ページングとは プログラムを複数同時に起動していた場合、各プログラムが動作するのに必要なメモリの総量が実際のメモリ容量を超えてしまうことがある そういった場合に、メモリの領域をページと呼ばれる一定の大きさの領域に分割して、使用頻度の少ないページを実際のメモリ上の物理的なアドレス(番地)からディスク領域(仮想メモリ)上の仮想的なアドレスに移動する 上記のような動作をページングという ### ページングに潜む危険性 メモリは電源を落とすと内容が消去される(揮発性) ディスク領域は電源を落としても内容が消去されない(不揮発性) ページングされた内容の中には、機密情報が含まれている可能性がある 機密情報が含まれているがページとして書き出されている場合に、その内容が読み込み可能になっていると他者に機密情報を盗み見られてしまう そこで、電源を落とす際にページングされた内容(ページングファイル)を初期化して、コンピュータに残さないようにする ## 前提知識 デフォルトの設定では、ページングファイルの内容はシャットダウンされてもそのまま残っている そこで、シャットダウン時にページングファイルを```0```で上書きして内容を消去する 具体的には、下記のレジストリキーを編集する <pre> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\ClearPageFileAtShutdown </pre> 下記にWindows8における設定・確認方法を解説する ## 確認方法 HACK#31と同様の手順で「レジストリエディター」を開き、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement\」を開きます。 すると、右側に「ClearPageFileAtShutdown」というDWORD値があるので、その値を1にしてください。(なければ作成する) そして、再起動することによって、この設定が適用されるようになります。 ページングファイルがきちんと削除されているかを確認する方法は現在調査中です。 # HACK#35 無期限パスワードのチェック ## 概要 - 無期限のパスワードが設定されいるユーザーを探し出して通知する - 一般的なセキュリティの認識としてパスワードは定期的に変更すべきである - 実状はパスワードを変更せずに利用していることが多い ## 背景 無期限のパスワードを設定しておくことはセキュリティ上好ましくないと言われている 例えば、標的型攻撃を受けた場合、攻撃者は何としても認証を成功させようとあらゆるパスワードのパターンを試す パスワードを変更されない期間が長ければ長いほど攻撃者に認証を成功させるための猶予期間を長く与えてしまうことになる そのため、パスワードには有効期限を設定して、定期的に変更されるようにしておくべきである このHACKでは自分の管理下にいるユーザーが無期限のパスワードを設定していないか確認する方法を学ぶ ## 前提知識 パスワードの期限あり・なしの切り替えは「コンピュータの管理 > ローカル ユーザーとグループ > ユーザー > 各ユーザーのプロパティ」から設定できる テキストのスクリプトでは、複数ユーザーのパスワード期限あり・なしを自動的に調査している ## 確認方法 「コンピュータの管理 > ローカル ユーザーとグループ > ユーザー > 各ユーザーのプロパティ」を確認して、「パスワードを無期限にする」にチェックが入っているかいないかで自身の現在の設定が確認できます * チェックあり → 無期限パスワード * チェックなし → 42日間の期限ありパスワード 上記の確認をユーザーごとに行っていると非常に効率が悪いので、テキストのスクリプトでは、同一ドメイン内のユーザーの設定を自動的に確認します テキストのスクリプトを実行するためには、Windows Server上でWindowsドメインを構築して、ユーザーをそこに参加させなければならないので、ここでは概要のみの記述とさせていただきます。

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully