國立嘉義大學112學年度第2學期教學大綱

課程代碼11223470027上課學制大學部
課程名稱安全程式設計與駭客攻防技術 Secure Programming and Hacking Technology授課教師 (師資來源)王智弘(資工系)
學分(時數)3.0 (3.0)上課班級資工系3年甲班
先修科目必選修別選修
上課地點理工大樓 A16-415 授課語言國語
證照關係網路安全與駭客技術相關證照、CEH (Certificated Ethical Hacker)等。晤談時間星期2第3節~第4節, 地點:A16-507 星期3第3節~第4節, 地點:A16-507
永續發展目標[SDGs]之關聯性工業化、創新及基礎建設
課程大網網址https://web085004.adm.ncyu.edu.tw/Syllabus/Syllabus_Rpt.aspx?CrsCode=11223470027
備 註
本課程之教學主題、內容或活動是否與性別平等議題有相關之處:否本課是否使用原文教材或原文書進行教學:是

◎系所教育目標:
為配合國家建設及產業發展之需要,本系以培育中高級資訊科技人才為目的。在教學理念上除了注重理論的探討之外並強調實際動手的能力,以期培育出具有深厚學識基礎並能實際應用的資訊科技人才。在專業必修中涵蓋基礎理論、電腦硬體、作業系統、資料結構及計算機網路等方面,並有畢業專題製作,使學生紮實基礎,同時課程包含四個專業學程,兼顧學術及實務之分流與訓練。分別為一:軟體工程及知識工程學程、二:互動多媒體學程、三:網路及資訊安全學程、四:資訊系統開發實務學程,以期作為日後升學就業的準備。
◎核心能力關聯性
1.應用數理邏輯推理之能力5 關聯性最強
2.具備資訊軟體專業之能力5 關聯性最強
3.具備資訊硬體專業之能力1 關聯性最弱
4.發掘、分析及解決問題之能力3 關聯性中等
5.現代資訊發展工具之使用與熟悉資訊應用系統之能力4 關聯性稍強
6.資訊軟體或硬體創新設計與實作之能力3 關聯性中等
7.有效溝通與團隊合作之能力3 關聯性中等
8.培養人文素養、專業倫理責任、社會關懷與生活技能之能力1 關聯性最弱
◎本學科內容概述:
本學科主要講述安全程式設計的概念,由此概念延伸,理解駭客針對網路及系統服務的攻擊模式與防禦的方法。由於程式碼本身可能有的威脅與攻擊,因此如何設計一個高品質及安全的程式,便成為重要的課題。近年來網站web 程式的安全威脅有更加氾濫的趨勢,因此課程中亦針對裝站安全進行深入剖析。本課程亦著重教導學生有關安全程式設計的方法以及利用工具檢測程式碼的安全。而在駭客攻防技術方面,將教授滲透測試的流程與原理並進行各項攻防技術之演練。
◎本學科教學內容大綱:
1. 軟體安全。2. 靜態分析 (Static Analysis) 與程式碼檢查 (Code Review)。3. 安全程式實務。4. 程式安全與 Exploitation 技術演練。5. 網站安全。6. 滲透測試。7. 網路攻防技術原理與演練。
◎本學科學習目標:
本課程旨在使同學了解安全程式設計的概念,如何設計一個高品質及安全的程式、程式碼本身可能有的威脅與攻擊,以及在其他方面如 網站web 程式設計所需注意的安全威脅。本課程亦著重教導學生有關安全程式設計的方法以及利用工具檢測程式碼的安全。對於駭客技術方面,則著重在滲透測試的流程與各項攻防技術之原理理解與演練。
◎教學進度:
週次主題教學內容教學方法
01
02/19
軟體安全軟體的安全與基本問題分析講授。
02
02/26
靜態分析 (Static Analysis)與程式碼檢查 (Code Review) (I)靜態分析 (Static Analysis) 簡介講授、討論。
03
03/04
靜態分析 (Static Analysis)與程式碼檢查 (Code Review) (II)利用靜態分析進行程式碼檢查 (Code Review)
檢查工具演練(SonarSource、Snyk 等)
C/C++/Java 程式等 (I)
講授、討論。
04
03/11
安全程式設計實務 (I)字串 (String) 安全
整數安全
Pointer 安全
Buffer Overflows (緩衝區溢位) 攻擊與防禦實驗
作業/習題演練、操作/實作、講授、討論。
05
03/18
安全程式設計實務 (II)Shellcode 技術與攻擊演練
動態記憶體管理
講授、討論。
06
03/25
程式安全與 Exploitation 技術演練上機實作演練
緩衝區溢位與 Shellcode 技術
Pwntools
作業/習題演練、操作/實作、講授、討論。
07
04/01
Introduction to DevSecOpsDevSecOps Pipeline
CI/CD and Security
Docker & Jenkins
GitHub Actions
GitLab
操作/實作、講授、討論。
08
04/08
網站Web application安全程式設計(I)SQL Injection 攻擊與防禦、Cross-site Scripting (XSS) 相關之攻擊與防禦
CSRF 、XXE、Session Cookies 等相關之攻擊與防禦

Dann Vulnerable Web App (DVWA)、WebGoat、bWAPP 等練習
操作/實作、講授、討論。
09
04/15
期中考期中考考試。
10
04/22
網站Web application安全程式設計(II)
網頁攻防演練
OWASP Broken Web Applications Project 練習 (上機實作演練)
Burp Suite 之 代理伺服器 Proxy 應用
Web 相關 CTF 攻擊訓練
作業/習題演練、操作/實作、講授、討論。
11
04/29
Python SecurityPython Flask Security (Web)
Input Validation
反序列化 (Deserialization) 之安全性
虛擬環境 (Virtual Environment)
講授、討論。
12
05/06
安全程式設計其他主題 (錯誤例外處理與特權程式)(I)隱私與保密程式 (Privacy and Secrets)
密碼程式(Cryptographic Programming)
錯誤與例外處理 (Errors and Exceptions)
模糊測試 (Fuzz Testing)
作業/習題演練、講授、討論。
13
05/13
安全程式設計其他主題 (錯誤例外處理、特權程式、持續整合與持續部署之安全)(II)特權程式 (Privileged Programs) 安全
CI/CD for SAST, DAST and SCA
(Continuous Integration/Continuous Deployment)
(Static Application Security Testing)
(Dynamic Application Security Testing )
(Software Composition Analysis)
操作/實作、講授、討論。
14
05/20
滲透測試與網路攻防技術原理與演練 (I) - 資料搜集與連接埠掃描、漏洞掃描與利用原理及工具駭客追蹤與網路封包分析、Port Scanning 等工具
ARP Spoofing、通行密碼破解、滲透測試 (Penetration Testing) 、攻擊防禦技術、Kali Linux、Metasploit、Nessus、OpenVAS 等工具
CVE & CVSS

上機實作演練駭客攻防技術
操作/實作、講授、討論。
15
05/27
滲透測試與網路攻防技術原理與演練 (II) - 進階技術滲透測試進階技術說明與展示

訓練學生透過撰寫 Python 及 Ruby 等腳本程式進行系統檢測與滲透測試等程序
作業/習題演練、講授、討論。
16
06/03
滲透測試與網路攻防技術原理與演練 (III) - 防禦技術網路安全防禦技術:防火牆 (iptables)
入侵偵測系統 (Snort)

系統漏洞相關 CTF 攻擊訓練
操作/實作、講授、討論。
17
06/10
期末專案展示分組進行實務專案報告
相關 CTF 攻擊訓練
操作/實作、口頭報告、討論、課程調整。
18
06/17
期末考期末考考試。
◎課程要求:
本課程以課程講授及實驗、習作為主要的方式。在課程講授方面,以 Brian Chess, Jacob West 所著之 Secure Programming with Static Analysis 以及 Robert C. Seacord 所著之 Secure Coding in C and C++ 為內容,並輔以其他教科書及教材,說明 web 程式設計安全以及密碼安全程式設計等課程內容。本課程實驗規劃著重於安全程式設計的開發與實驗。例如:Buffer Overflows (緩衝區溢位) 攻擊與防禦實驗、安全程式碼分析工具之使用及測試、Web 攻擊測試與安全程設防護、DevSecOps 介紹以及密碼技術程式練習等。
此外,對於駭客攻防則以滲透測試(Penetration Testing)流程為主要講解內容,並透過原理解說、 Kali Linux 架設與 Metasploit 工具使用讓學生更能熟悉相關技術,而內容也包含防禦技術與工具之講解。
◎成績考核
課堂參與討論15% : 到課率、討論情形
期中考25%
期末考30% : 紙筆測驗或期末專案製作與展示
作業/習題演練30% : 作業、課堂練習與實驗
◎參考書目與學習資源
1. Brian Chess, Jacob West, Secure Programming with Static Analysis, Addison Wesley, 2007.(教科書)
2. Robert C. Seacord, Secure Coding in C and C++(2nd Edition), Addison Wesley, 2013.(教科書)
3. Robert C. Seacord, The CERT C Secure Coding Standard, Addison Wesley, 2008.
4. Rafay Baloch. Ethical Hacking and Penetration Testing Guide, Auerbach Publications, 1 edition, 2014.
4. Chris Shiflett, Essential PHP Security, O'Reilly Media, 2005.
5. Dafydd Stuttard and Marcus Pinto, The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws, Wiley, 2 edition, 2011.
6. Chris Snyder, Thomas Myer and Michael Southwell, Pro PHP Security: From Application Security Principles to the Implementation of XSS Defenses, Apress, 2 edition, 2010.
7. Jon Erickson, Hacking: The Art of Exploitation, 2nd Edition, No Starch Press, 2008.
8. Daniel Regalado, Shon Harris and Allen Harper, Gray Hat Hacking The Ethical Hacker's Handbook, Fifth Edition, McGraw-Hill Education, 2018.
9. Mohit Raj, Python Penetration Testing Essentials, Packt Publishing Ltd., 2015.
10. Christopher Duffy. Learning Penetration Testing with Python. Packt Publishing, 2015.
11. James Broad, Andrew Bindner, Hacking with Kali: Practical Penetration Testing Techniques, Syngress, 2014.
12. Vijay Kumar Velu and Robert Beggs, Mastering Kali Linux for Advanced Penetration Testing - Third Edition, Packt Publishing Ltd., 2019.
13. José Manuel Ortega, Mastering Python for Networking and Security, 2nd Edition. Packt Publishing, 2021.
◎教材講義
請改以帳號登入校務系統選擇全校課程查詢方能查看教材講義
1.請尊重智慧財產權、使用正版教科書並禁止非法影印。
2.請重視性別平等教育之重要性,在各項學生集會場合、輔導及教學過程中,隨時向學生宣導正確的性別平 等觀念及尊重多元性別,並關心班上學生感情及生活事項,隨時予以適當的輔導,建立學生正確的性別平等意識。