IOS ์ฑ ์ทจ์ฝ์ ์ ๊ฒ 2ํธ
ํด๋น ๋ธ๋ก๊ทธ๋ ํดํน ๋ฐ ๋ณด์ ๋ธ๋ก๊ทธ๋ก ๊ณต๋ถ ๋ฐ ์ฐ๊ตฌ์ฉ์ผ๋ก ์์ฑ๋์ด์ง๊ณ ์์ต๋๋ค. ์๋์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํดํน ์๋ ๋ฐ ์ค์ ๊ณต๊ฒฉ์ ์๋ํ์ฌ ์ผ์ด๋๋ ๋ชจ๋ ์ฑ
์์ ๋ณธ์ธ(๋ฐ๋ผํ์)์๊ฒ ์์์ ์๋ ค๋๋ฆฌ๋ฉฐ, ๊ธ์ด์ด๋ ์๋ฌด๋ฐ ์ฑ
์์ ์ง์ง ์์ต๋๋ค. ๊ผญ ๊ณต๋ถ ๋ฐ ์ฐ๊ตฌ์ฉ์ผ๋ก๋ง ์ฌ์ฉํ์ฌ ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ํ๋ณด๊ธ ์ฌ์ฑ ์ท์ ๋๋ด ์คํ๋์ค์์!!! https://always-spring.co.kr/ ๋๋ด์คํ๋์ค ๋น์ ์ ์ถ์ ์ธ์ ๋ ๋ด์ฒ๋ผ ํ๊ธฐ์ฐธ์ ๋ํด์ฃผ๋ ๋๋ด์คํ๋์ค always-spring.co.kr 2023.05.23 - [Security Study/System] - IOS ์ฑ ์ทจ์ฝ์ ์ ๊ฒ IOS ์ฑ ์ทจ์ฝ์ ์ ๊ฒ ํด๋น ๋ธ๋ก๊ทธ๋ ํดํน ๋ฐ ๋ณด์ ๋ธ๋ก๊ทธ๋ก ๊ณต๋ถ ๋ฐ ์ฐ๊ตฌ์ฉ์ผ๋ก ์์ฑ๋์ด์ง๊ณ ์์ต๋๋ค. ์๋์ ๋ด์ฉ์..
IOS ์ฑ ์ทจ์ฝ์ ์ ๊ฒ
ํด๋น ๋ธ๋ก๊ทธ๋ ํดํน ๋ฐ ๋ณด์ ๋ธ๋ก๊ทธ๋ก ๊ณต๋ถ ๋ฐ ์ฐ๊ตฌ์ฉ์ผ๋ก ์์ฑ๋์ด์ง๊ณ ์์ต๋๋ค. ์๋์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํดํน ์๋ ๋ฐ ์ค์ ๊ณต๊ฒฉ์ ์๋ํ์ฌ ์ผ์ด๋๋ ๋ชจ๋ ์ฑ
์์ ๋ณธ์ธ(๋ฐ๋ผํ์)์๊ฒ ์์์ ์๋ ค๋๋ฆฌ๋ฉฐ, ๊ธ์ด์ด๋ ์๋ฌด๋ฐ ์ฑ
์์ ์ง์ง ์์ต๋๋ค. ๊ผญ ๊ณต๋ถ ๋ฐ ์ฐ๊ตฌ์ฉ์ผ๋ก๋ง ์ฌ์ฉํ์ฌ ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ํ๋ณด๊ธ https://always-spring.co.kr/ ๋๋ด์คํ๋์ค ๋น์ ์ ์ถ์ ์ธ์ ๋ ๋ด์ฒ๋ผ ํ๊ธฐ์ฐธ์ ๋ํด์ฃผ๋ ๋๋ด์คํ๋์ค always-spring.co.kr ๊ฐ์ android ์ ๋ค๋ฅด๊ฒ ios์ ์ฑ ์ทจ์ฝ์ ์ง๋จ์ ์กฐ๊ธ์ ์ด๋ ค์์ด ์กด์ฌํ๋ ๊ฒ๊ฐ๋ค. ๊ทธ๋์ ํ๋ํ๋ ๋งจ๋
์์ ์์์ ํด๋ณด๋ ค๊ณ ํ๋ค. apk์ ๊ฒฝ์ฐ dex2jar๋ฅผ ์ด์ฉํ์ฌ ๋ถ์์ด ๊ฐ๋ฅํ์ง๋ง ios์ ๊ฒฝ์ฐ apk์ฒ๋ผ ๋ถ์์ด ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์..
chainalysis๋ฅผ ํตํ ๊ฐ์ํํ ์ถ์ ๊ธฐ๋ณธ
์์ ๊ฐ์์์ฐ(Cryptocurrency)์ ๊ธฐ๋ณธ ํน์ง ์ดํด ์ฃผ์ ์ฃผ์ฒด ๋ฐ ์ฌ์ฉ ์ฌ๋ก ํ์
์ฌ๋ฐ๋ฅธ ์ฉ์ด ์ฌ์ฉ ์ง๊ฐ. ์ฃผ์ ๋ฐ ํด๋ฌ์คํฐ์ ๊ตฌ๋ณ ๋ธ๋ก์ฒด์ธ๊ณผ ๋นํธ์ฝ์ธ ๋ธ๋ก์ฒด์ธ์ด๋? → ์ฌํ ์ ๋์นด๋ชจํ ๊ฐ ๊ณ ์ํ ๊ฑฐ๋๋ด์ญ ๊ธฐ๋ก ๊ณผ์ ์ด ์ฐ๋์์ผ๋ก ์ฅ๋ถ๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ์ ๋นํธ์ฝ์ธ ์ฅ๋ถ๋ฅผ '์๊ฐ ์ฌ์ฌ'์ด๋ผ ๋ถ๋ฆ ๊ฐ๋ฐฉํ(ํ์ค์ํ/๋ฌดํ๊ฐํ) ↔ ํ์ํ(์ค์์ง์คํ/ํ๊ฐํ)๊ฑฐ๋ ๋ด์ญ ๊ณต๊ฐ ↔ ๊ฑฐ๋๋ด์ญ์ ๊ตฌ์ฑ์์๊ฒ๋ง ๋ณด์ ๋๊ตฌ๋ ์ ์๊ฐ๋ฅ ↔ ๊ตฌ์ฑ์์ ์ํ ํ์ํ ๋คํธ์ํฌ ํ์ด๋ธ๋ฆฌ๋ ๋ธ๋ก์ฒด์ธ → ๊ฐ๋ฐฉํ๊ณผ ํ์ํ์ ์ค๊ฐ ⇒ ๋ฆฌํ์ด ๋ํ์ ์ธ ์ → ๊ฑฐ๋๋ด์ญ์ด ๊ณต๊ฐ๋์ด์์ผ๋ ํ์ํ ๋คํธ์ํฌ์ ์๊ณํ ํน์ ์ปจ์์์ ํํ์ ์ด์ ๋นํธ์ฝ์ธ์ด๋?→ ์ฒซ ๋ฒ์จฐ ๋ธ๋ก์ 09๋
1์ 3์ผ์ ์ฑ๊ตด๋จ→ ์ผ๋ฐ์ ์ผ๋ก ์ธ์ฉ๋ฌธ์ 08๋
๊ธ๋ก๋ฒ ๊ธ์ต ์๊ธฐ๋ฅผ ์ด๋ฐ..
[์ํธํ] ๋์นญํค ์ํธ P-๋ฐ์ค
ํ๋๋ธ๋ก ์ํธ -> ํ์ฐ๊ณผ ํผ๋๊ณผ ๊ฐ์ ์ฑ์ง์ ๋ง์กฑ์ํค๊ธฐ ์ํ ์ ์น์์(P-๋ฐ์ค)์ ์นํ์์(S-๋ฐ์ค)์ ๊ทธ ๋ฐ์ ๊ตฌ์ฑ์์ ๊ฒฐํฉ P-๋ฐ์ค => ๋ฌธ์ ๋จ์๋ก ์ํธํ๋ฅผ ํ๋ ๊ณ ์ ์ ์น ์ํธ๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ํ ์ข
๋ฅ : ๋จ์ P-๋ฐ์ค ์ถ์ P-๋ฐ์ค ํ์ฅ P-๋ฐ์ค๊ฐ ์กด์ฌ ์ถ์ P-๋ฐ์ค : n๋นํธ๋ฅผ ์
๋ ฅ๋ฐ์ m๋นํธ๋ฅผ ์ถ๋ ฅํ๋ P-๋ฐ์ค๋ก์ n>m์ ๋ง์กฑ / ์
๋ ฅ๋นํธ ์ค ํน์ ๋นํธ๋ ์์ค๋์ด ์ถ๋ ฅX ํ์ฅ P-๋ฐ์ค : n๋นํธ๋ฅผ ๋ฐ์ m๋นํธ๋ฅผ ์ถ๋ ฅํ๋ P-๋ฐ์ค์ด๋ฉฐ, nm ์กด์ฌX ํ์ฅ P-๋ฐ์ค n
์ํธํ
๊ณ ๋ ์ํธ - ์ํธ๋ฌธ์์ ์๋ฌธ์ ์ ์ถํ ์ ์๋ค.ํ๋ ์ํธ - ๊ณ ๋์ํธ์ ๋ฐ๋๋ก ์ํธ๋ฌธ์์ ์๋ฌธ์ ์ ์ถํ ์๊ฐ ์๋ค.์ด์ ๋ ์์ฆ์ ํ๋์ํธ๋ ์ํ์ ์๋ฆฌ๋ก ํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ๋ ์ํธ์๋ฐฉํฅ ์ํธํ - ์ํธ๋ฌธ์ ๋ค์ ํ๋ฌธ์ผ๋ก ๋ณต์์ ํ ์์๋ค. - ๊ฐ์ญ์ - Encrytion๋์นญํน ์ํธ vs ๊ณต๊ฐํค ์ํธ(= ๋น๋์นญํค ์ํธ)1) ๋์นญํค ์ํธ - ์ํธํค์ ๋ณตํธํ ํค๊ฐ ๊ฐ๋ค. - ๋น๊ต์ ์ฐ์ฐ์ ์์ด ์ ์ด ๊ณ์ฐ์ด ๋น ๋ฅด๋ค. - ์คํธ๋ฆผ ์ํธ์ ๋ธ๋ก ์ํธ ์ฆ, 2์ข
๋ฅ๋ก ๋๋๋ค.1) ์คํธ๋ฆผ ์ํธ - ํ ๋ฒ์ ํ ๋นํธ๋ ํ ๋ฐ์ดํธ ๋จ์๋ก ์ํธํ ๋๋ค. - ๋ธ๋ก ์ํธ๋ณด๋ค ๋น ๋ฅด๋ ๋ฎ์ ๋ณด์์ฑ์ ๊ฐ์ง๋ค. - ๋คํธ์ํฌ ์ก์์ , ์คํธ๋ฆฌ๋ฐ ๋ฑ์ ์ฌ์ฉ๋๋ค.2) ๋ธ๋ก ์ํธ - ํ ๋ฒ์ ํน์ ๋ธ๋ก(๋ฐ์ดํธ) ๋จ์๋ก ์ํธํ ๋๋ค. - ์ ํด์ง ํฌ..
์์ ํ๋ก์ธ์ค ๋๋ฒ๊น ํ๊ธฐ
๋๋ฒ๊น
์ ํ๋ค๋ณด๋ฉด ์์ ํ๋ก์ธ์ค๋ ๋๋ฒ๊น
์ด ๋์ง ์์ ๋๋ ์๋๊ตฐ์! ๊ทธ๋์ ํ๋ฒ ๊ฒ์ํด ๋ดค์ต๋๋น!! ๊ฒ์์ ํด๋ณด๋ MSDN์๋์ ์ด ํจ์๊ฐ ๋์ค๋๋ฐ์!! ์ด ์ดํจ์๋ฅผ ์ ์ฝ์ด ๋ณด๋ DEBUG_PROCESS ๋ผ๋ ๊ฒ์ ์ฐพ์ ์ ์์์ต๋๋ค. DEBUG_PROCESS ์ด๋ Process Creation์ ์ธ์๋ก debug_process์ธ์๋ก ๋๊ฒจ์ฃผ๋ฉด ๋๋ค๊ณ ๋ช
์๋์ด ์์ต๋๋ค.
integer overflow
#include int main(){ int a,b; printf("a + b = 0 (a,b != 0)\n"); printf("A = "); scanf("%d",&a); printf("B = "); scanf("%d",&b); if(a + b == 0) { printf("Congratulation!\n"); } else if(a == 0 || b ==0) { printf("Fuck up!\n"); } else { printf("Fuck you!\n"); } return 0;} integer overflow๋?๊ธฐ๋ณธ ์ ์ํ์์ ์ ์ฅํ ์ ์๋ ๊ธฐ๋ณธ์น์ ๊ฐ๋ณด๋ค ๋ ํฐ ์๋ฅผ ์
๋ ฅํ์ฌ ์๊ธฐ์น ์์ ํ๋์ ์ทจํ๊ฒ ํ๋ ๊ฒ
system 24byte shellcode
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80
Use After Free
use after free ๋ผ๋ ์ทจ์ฝ์ ์ ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ฒ Code/Data/Heap/Stack์ผ๋ก ๋๋ ์ ์๋๋ฐ Code+Data=Binary์์ญ Heap=ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ ํ ๋น/ํ์/์ ์ด ํ ์ ์๋ ์์ญ Stack=ํจ์ ๊ฐ๋ณ๊ณต๊ฐ(์คํํ๋ ์),์ธ์์ ๋ฌ๋ฑ์ผ๋ก ์ฌ์ฉํ๋ ์์ญ ์ด๋ ๊ฒ ๊ตฌ๋ถํ ์ ์๋ค ์ด ์ค์์ UAF๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ ์์ญ์ ์๋ชป ๋ค๋ค์ ๋ ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด๋ค. ์๋์ ์์ค๋ฅผ ๋ณด์ #include #include typedef struct UAF{int number;}uaf; int main(void){uaf *one;uaf *two; one = malloc(100);printf("one->number:%d\n",one->number); one->number=12345;printf(..
memory ์์ญ
memory code ์์ญ- ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ memory ์์ญ์ผ๋ก hex file or bin fire memory- program ๋ช
๋ น์ด ์์นํ๋ ๊ณณ์ผ๋ก ๊ธฐ๊ณ์ด๋ก ์ ์ด๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. data ์์ญ- ์ ์ญ๋ณ์, ์ ์ ๋ณ์, ๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด ๋ฑ์ด ์ ์ฅ๋์ด ์๋ค. * ์ด๊ธฐํ ๋ ๋ฐ์ดํฐ๋ data ์์ญ์ ์ ์ฅ๋๊ณ ์ด๊ธฐํ ๋์ง ์์ ๋ฐ์ดํฐ๋ bss(block stated symbol)์ ์ ์ฅ๋๋ค. - ํ๋ก๊ทธ๋จ์ด ์คํ ๋ ๋ ์์ฑ๋์ด ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์ ๊น์ง ์กด์ฌํ๋ค. - ํจ์ ๋ด๋ถ์ ์ ์ธ๋ static ๋ณ์๋ ํ๋ก๊ทธ๋จ์ด ์คํ ๋ ๋ ๊ณต๊ฐ๋ง ํ ๋น๋๊ณ , ํจ์๊ฐ ์คํ ๋ ๋ ์ด๊ธฐํ ๋๋ค. heap ์์ญ- ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ํ๊ณ ์ ํ ๋ ์์นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ๋์ ๋ฐ์ดํฐ ์์ญ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋ฉ๋ชจ..
C์ธ์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
ใ
ฃ ใ
ฃใ
ฃ ใ
ฃใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
กใ
ฃ ใ
ฃใ
ฃ ใ
ฃ main ํจ์์ฆ, ๋จผ์ ํธ์ถ ๋ ํจ์์ ์คํ๊ณต๊ฐ ์ผ์๋ก ๋ฆ๊ฒ ํด์ฒด ๋๋ค. free ํจ์๋ฅผ ํธํํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ ์ข
๋ฃ ํ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ์๊น?-> ํ๋ก๊ทธ๋จ ์คํ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋๋ฉด ์ด์์ฒด์ ์ ์ํด์ ์ ๋ถ ํด์ ๊ฐ ๋๋ค. ์ ํ์ฒ๋ฆฌ๋?์ปดํ์ผ ์ด์ ์ ์ฒ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. ๋งคํฌ๋ก ํจ์์ ์ฅ์ - ์ผ๋ฐ ํจ์์ ๋นํด ์๋๊ฐ ๋น ๋ฅด๋ค.- ์๋ฃํ์ ๋ฐ๋ผ์ ๋ณ๋๋ก ํจ์๋ฅผ ์ ์ํ์ง ์์๋ ๋๋ค. ๋งคํฌ๋ก ํจ์์ ๋จ์ - ์ ์ํ๊ธฐ๊ฐ ์ ๋ง๋ก ๊น๋ค๋กญ๋ค.- ๋๋ฒ๊น
ํ๊ธฐ๊ฐ ์ฝ์ง ์๋ค.
race condition(๊ฒฝ์ ์กฐ๊ฑด)attack
๊ฒฝ์ ์กฐ๊ฑด์ด๋? ๋ ํ๋ก์ธ์ค๊ฐ์ ๋ฆฌ์์ค(resource)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋คํฌ๋ ๊ณผ์ ์ผ๋ก, ๋ณธ๋ ํดํน๊ธฐ๋ฒ์ ์นญํ๋ ๊ฒ์ด ์๋๋ค. ์๋ ค์ง ์ฝ๋๋ฅผ ํตํด ๊ฒฝ์ ์กฐ๊ฑด์ ์๋ ์๋ฏธ๋ฅผ ์์๋ณด์. ์ฌ๊ธฐ์ fork()๋ผ๋ ํจ์๋ ๋์ผํ ์์
์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ ๋์ฐ๋ ํจ์๋ก์จ fork()๋ฅผ ํธ์ถํ ๋, ๊ฒฐ๊ณผ ๊ฐ์ ์๋ก ๋ง๋ค์ด์ง ํ๋ก์ธ์ค์ ๋ฒํธ๊ฐ ๋๋ค. ์ด๋ก ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ๋ค. if(a%2 ==0) => printf("O")๊ฐ /*๋ถ๋ชจ ํ๋ก์ธ์ค*/์์ 50๋ฒ์ ์ถ๋ ฅํ๊ณ if(a%2 ==1) => printf("X")๊ฐ /*์์ ํ๋ก์ธ์ค*/์์ 50๋ฒ์ ์ถ๋ ฅํ๋ค๊ณ ํ๋ค. ๊ทธ๋ผ ๊ธฐ๋ณธ์ ์ผ๋ก OXOXOXOXOXOXOX์ด๋ฌํ ์์ผ๋ก ์ถ๋ ฅ์ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ์ด์๋ค๋ฅด๊ฒ XXOXXOOOOOOOXXOXOOOOO ์ด๋ฌํ์..