CTF集训(7)

MISC & Crypto(2)

MISC(2)

图片进阶

png文件结构包括

  • png文件标志
  • png数据块

分别是长度、数据块类型码、数据块数据、CRC校验码

一张图片有一个IHDR,包括宽、高、深度、类型、压缩方法

某年西湖论剑

IHDR不完整,需要手动补全

补全以后用foremost分离,得到四张图片

IDAT是主要内容,可以存在多个。可以使用pngcheck进行检测,然后提取异常块进行分析。

pngcheck -v qwq.png

jpg隐写:由于jpg使用DCT(离散余弦变换),基于此方法可能存在JSteg、JPHide、Outguess、F5等

  • Stegdetect
  • JPHS
  • Outguess

例题

先用stegdetect检测

然后JPHS/outguess进行提取

一般敏感度调10

文档隐写

word自带文件隐藏功能/文字颜色为白色

pdf隐写:wbStego4open工具

可以隐藏到BMP、TXT、HTM、PDF中

音频隐写

Morse电码/二进制:高位1,低位0

部分音频使用快速播放的Morse电码传递信息

通过Audacity打开文件,然后用CTFcrack分析即可

频谱图隐藏信息:研究频谱图

也有对单独声道的隐写

MP3:将数据写在MP3的奇偶校验块

利用MP3stego的decode模块即可

视频隐写

将隐写图片嵌入视频

可以用foremost、ffmpeg

流量分析

  • wireshark捕获流量数据包,查看流入、流出/http、tcp
  • 利用binwalk提取分析,也可以用network miner

常用套路:分析协议,根据协议种类跟踪数据,根据数据提取信息

通常只涉及应用层,传输层比较少

优先查找http,在get/post提取关键信息

其次看tcp,分析连接过程,追踪数据流

现代密码学

古典密码学的安全性依赖于算法的保密性。但是随着密码学的发展,现代密码学有了新的突破。

假如敌人获取到了密码的加密方法,那么破解密码是非常容易的,这也导致这种加密不安全。现代密码学中,算法是公开的,但是我们需要一个 密钥 。如果没有密钥,敌人难以破解密码。

CTF中,古典密码学往往出现在MISC中,缺乏数学、严谨的模型分析。Crypto部分一般考察现代密码学。

常见的算法库有

现代密码学可以粗略的分成对称密码学和非对称密码学。对称密码学的加密和解密采用相同密钥,非对称密码则引入了 公钥 的概念。RSA是最典型的非对称密码。

常见的对称密码有DES/3DES、AES、RC4、IDEA等。由于对密钥的需求,导致共享密钥需要一定条件,这个共享过程有其危险性。

非对称密码实质上创造了一个安全的信道。加密密钥是公钥,可以用加密密钥加密,发送信息。但是其他人无私钥,信息只能通过解密密钥进行解密。缺点是速度慢。

现代场景中,一般两种协议结合使用。例如HTTPS就是先用非对称密码传递密钥,然后利用对称密码来解码正文。

群论基础

设$S$是一个非空集合,函数$f:S^n \to S$ 是$S$上一个$n$元运算,$n$成为阶数。那么可以定义$<S, f_1, f_2, \cdots, f_m>$ 是一个代数系统,包括一个集合和在集合上封闭的运算。

一个常见的代数系统是模意义下的运算。设$S={x \in N | 0 \le x < m}$ ,那么$+_m$和$\times _m$都在模意义下封闭,因此$<S, +_m, \times_m>$构成一个代数系统。

如果对于运算$$,$\exists e$使得$e * x = x * e = x$,就称$e$是运算$$的单位元。那么,如果$x * y = y * x = e$,就称$y$是$x$的逆元,常常记作$x^{-1}$。如果$x * \theta = \theta * x = \theta$,则称$\theta$是零元。

如果有一个代数系统,符合结合律、存在单位元、每个元素都存在逆元,那么就称这个代数系统是一个群。对于群$<G, >$,一般称$$为乘法。当$*$满足交换律,则成为阿贝尔群。我们不加证明的给出群的充要条件:

如果$<G, *>$为一个群,则$\forall a, b \in G$,满足

  1. $\exists x$,$a * x = b$
  2. $\exists y$,$y * a = b$

并且二者唯一。

接下来我们递归的定义幂:
$$
a^n = \begin{cases} e, & n = 0 \ a^{n-1} * a, &n > 0 \ (a^{-1})^n, & n < 0 \end{cases}
$$
如果有一个元素$g \in G$,使得每个元素$a \in G$都有对应的$i \in I$将$a$表示为$g^i$,则称$<G, *>$为一个循环群。也称群由$g$生成,称$g$为生成元。

由此我们给出重要的Lagrange定理:

如果$G$为阶数$\varphi(n)$的乘法群,$g \in G$,则$g$阶整除$\varphi(n)$

由此我们得到了欧拉定理和费马定理。接下来我们可以引入RSA了。

RSA

设$n = p \cdot q$ ,$p,q$为素数。那么$\varphi(n) = (p-1)(q-1)$。取$w \in N_+$,使得$(w, \varphi(n))=1$,$d = w^{-1} \pmod{ \varphi(n)}$ 。将明文分解为若干长度小于$n$的段$m$,那么

  • 加密:$E(m) = m^w \mod n$
  • 解密:$D(c) = c^d \mod n$

$w, n, p, q, \varphi(n), d$是保密的。

证明:只需证明$m \equiv c^d \pmod n$

即证明 $m^w \equiv m^{dw} \pmod n$

考虑到$dw \equiv 1 \pmod n$

因而只需证明 $m^w \equiv m \pmod n$

如果$(w, n) = 1$,那么这一形式就是Felmet定理。

否则,设$m = kp$,且$q \not \mid m$ 。则有$m^{q-1} \equiv 1 \pmod q$

进而,$m^{r \varphi(n)} \equiv m^{r (p-1) (q-1)} \equiv 1 \pmod q$

化成$m^{r\varphi(n)} = hq + 1$

同时乘以m,则

$m^{r\varphi(n)+1} = hqkp + m = hkn + m$

亦即 $m^{r \varphi(n)+1} \equiv m \pmod n$

我们知道$dw \equiv 1 \pmod {\varphi(n)}$,则$dw + r\varphi(n) = 1$ ,故而

$m^{dw} \equiv m \pmod n$

那么RSA真的安全吗?其安全性首先要求我们找到两个大质数p、q。这一点和Miller-Rabin有关,我们不展开讨论。

接下来是三个常见的攻击手段。

(1)选择密文攻击

已知$c = m^e \mod n$ 。假如我们已知$\hat{c}$的明文$\hat{c}^d \mod n$,并且能查找到
$$
\left(\frac{c}{\hat{c}}\right)^d \mod n
$$
那么$m$就是二者乘起来。

(2)如果$w$很小

考察到$c \equiv m^w \mod n$即 $m^w = c + kn$,通过枚举$k$可以得到是否由$c+kn$的$w$次方根是整数的情况。

(3)共模

假如有$c_1 = m^{e_1} \mod n, c_2 = m^{e_2} \mod n$ 并且$(e_1, e_2) = 1$

也就是$\exists r,s $ 使得 $re_1 + se_2 = 1$

那么 $(c_1^{-1})^{-r} \cdot c_2 ^s \equiv m \pmod n$

# CTF

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×