---
# System prepended metadata

title: AI資安學習Day02

---

# AI資安學習Day02
今日主要學習網路封包
## AI提供目標
![image](https://hackmd.io/_uploads/Bkpm48ybgl.png)
## 目標1.Wireshark+TCP/IP
![image](https://hackmd.io/_uploads/r1HgH8Jblg.png)
> wireshark使用截圖

目標1的實作內容
AI提到了ping和curl的command
我了解到ping指令是透過ICMP protocol進行交互
而curl指令則透過TCP protocal進行交互
下面來介紹一下我學到的內容

### ping
```
ping [ip address]
```
此指令透過ICMP protocol進行傳輸
這個協議並不會進行"三次握手" -> 稍後會進行解釋

ping實際上不會像TCP一樣建立傳輸的通道
它本質上只是去先使用DNS查出網域的IP
再來就只是去敲敲門
看這個網域有沒有人在家
如果有人在家
對方的ICMP則會回復有人在家
這樣就能夠得知這個ip是不被可連線的

### curl
```
curl [ip address]
```
此指令則是使用TCP protocol和外部ip建立連接
在建立連接時為了確保通訊的可靠、雙向、有序
在進行連接時需要進行三次握手
這個操作是為了確保
1.客戶端能發送資料 ✅
2.伺服器能接收資料 ✅
3.伺服器也能發送資料 ✅
4.客戶端能接收伺服器的資料 ✅
而透過wireshark抓包後
可以發現前三個欄位
![image](https://hackmd.io/_uploads/SJYSC5xZeg.png)
就是三次握手的過程
簡而言之，客戶端一開始會發送請求給伺服器
並說我的Seq=0
> 註：Seq(Sequence Number),Ack(Acknowledgment Number)


但詢問過AI之後我發現Seq通常會是隨機的
只是我今天實作時剛好是0 <- 這樣駭客會很好猜到
通常Client在和Server端進行交互時
也就是TCP在建立連線時
Client和Server端
會隨機產生一個初始序號（Initial Sequence Number, ISN）
作為Seq的值
這種做法避免了駭客進行以下的攻擊或偽裝
1.假裝是IP的本人(IP spoofing)
2.猜出Seq序號(Sequence Prediction Attack)
3.發出假封包脅持連線(session hijacking)

另外隨機產生ISN
還能夠避免斷線後
重新使用TCP進行連接時
誤將舊資料誤當成新資料的錯誤

再來我再詳細說明一下三次握手的過程
1.Client 和 Server端會隨機產生ISN
2.第一次握手Client會將它的Seq傳給Server端
3.第二次握手Server端接收到之後會將Ack=Client的Seq+1並回傳
4.第三次握手Client接收到Server端的Ack後將自己的Seq+1,Ack則=Server端Seq+1
我的理解上是這樣子
Seq用來記錄自己的下一次要從哪開始傳
Ack則用來記錄Client/Server上一次傳到哪
下次要從哪裡開始傳
![image](https://hackmd.io/_uploads/B1s1Vje-eg.png)
>AI的示意圖



## 延伸學習
為/bin/bash加上SUID
可以看到檔案擁有者的權限變為rws
這表示有SUID
這代表所有使用者打開這個檔案都會以root執行
這樣十分危險，若是有此漏洞則可以用此方式提權
![image](https://hackmd.io/_uploads/HJxY9je-lg.png)
以下指令可以查找檔案中含SUID的程式
```bash=
find / -perm -4000 -type f 2>/dev/null
```
![image](https://hackmd.io/_uploads/B1_A9sxbxx.png)

可以透過以下指令
讓一般的使用者都擁有root的權限
```bash=
/tmp/mysecretbash -p
```
>-p 表示：保持父程序的權限（就是 root）

