Submit Search
Upload
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
•
33 likes
•
9,409 views
James (SeokHun) Hwang
Follow
시스템 해킹을 쉬운 배울수 있는 해커스쿨 문제풀이 자료임 최대한 쉽게 설명할려고 노력하였으나~^^ 보시는 분들이 어떨지.
Read less
Read more
Education
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 86
Download now
Download to read offline
Recommended
해킹 대회 리뷰 및 실전 해킹
해킹 대회 리뷰 및 실전 해킹
totodeung
모의해킹 전문가 되기
모의해킹 전문가 되기
Jeremy Bae
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
02.모의해킹전문가되기
02.모의해킹전문가되기
James (SeokHun) Hwang
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인
H4C
Pythonでパケット解析
Pythonでパケット解析
euphoricwavism
Nmapの真実(続)
Nmapの真実(続)
abend_cve_9999_0001
Nmap 9つの真実
Nmap 9つの真実
abend_cve_9999_0001
Recommended
해킹 대회 리뷰 및 실전 해킹
해킹 대회 리뷰 및 실전 해킹
totodeung
모의해킹 전문가 되기
모의해킹 전문가 되기
Jeremy Bae
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
02.모의해킹전문가되기
02.모의해킹전문가되기
James (SeokHun) Hwang
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인
H4C
Pythonでパケット解析
Pythonでパケット解析
euphoricwavism
Nmapの真実(続)
Nmapの真実(続)
abend_cve_9999_0001
Nmap 9つの真実
Nmap 9つの真実
abend_cve_9999_0001
Nmapの真実
Nmapの真実
abend_cve_9999_0001
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
junk_coken
CTFとは
CTFとは
Hiromu Yakura
えっ今日はハッキングしてもいいのか?(CTF Web入門)
えっ今日はハッキングしてもいいのか?(CTF Web入門)
otya mura
Format string Attack
Format string Attack
icchy
실무자가 말하는 모의해킹
실무자가 말하는 모의해킹
양 한빛
第二回CTF勉強会資料
第二回CTF勉強会資料
Asuka Nakajima
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
Masakazu Ikeda
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan98
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
zaki4649
(ISC)2 secure japan 2021 自動車のサイバーセキュリティアプローチ
(ISC)2 secure japan 2021 自動車のサイバーセキュリティアプローチ
trmr
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
abend_cve_9999_0001
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
Marp Next Tips !
Marp Next Tips !
Nobutada Matsubara
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみた
Akira Iwamoto
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
makopi 23
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
INSIGHT FORENSIC
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
INSIGHT FORENSIC
More Related Content
What's hot
Nmapの真実
Nmapの真実
abend_cve_9999_0001
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
junk_coken
CTFとは
CTFとは
Hiromu Yakura
えっ今日はハッキングしてもいいのか?(CTF Web入門)
えっ今日はハッキングしてもいいのか?(CTF Web入門)
otya mura
Format string Attack
Format string Attack
icchy
실무자가 말하는 모의해킹
실무자가 말하는 모의해킹
양 한빛
第二回CTF勉強会資料
第二回CTF勉強会資料
Asuka Nakajima
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
Masakazu Ikeda
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan98
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
zaki4649
(ISC)2 secure japan 2021 自動車のサイバーセキュリティアプローチ
(ISC)2 secure japan 2021 自動車のサイバーセキュリティアプローチ
trmr
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
abend_cve_9999_0001
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
Marp Next Tips !
Marp Next Tips !
Nobutada Matsubara
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみた
Akira Iwamoto
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
makopi 23
What's hot
(20)
Nmapの真実
Nmapの真実
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
CTFとは
CTFとは
えっ今日はハッキングしてもいいのか?(CTF Web入門)
えっ今日はハッキングしてもいいのか?(CTF Web入門)
Format string Attack
Format string Attack
실무자가 말하는 모의해킹
실무자가 말하는 모의해킹
第二回CTF勉強会資料
第二回CTF勉強会資料
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達
(ISC)2 secure japan 2021 自動車のサイバーセキュリティアプローチ
(ISC)2 secure japan 2021 自動車のサイバーセキュリティアプローチ
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Marp Next Tips !
Marp Next Tips !
ConfD で Linux にNetconfを喋らせてみた
ConfD で Linux にNetconfを喋らせてみた
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
Ctfのためのpython入門
Ctfのためのpython入門
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
SQLアンチパターン読書会 4章 キーレスエンエントリ(外部キー嫌い)
Similar to [무료] 시스템해킹(해커스쿨문제풀이) 공개버전
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
INSIGHT FORENSIC
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
INSIGHT FORENSIC
리눅스 드라이버 실습 #1
리눅스 드라이버 실습 #1
Sangho Park
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
Youngjun Chang
(160820) #fitalk fileless malware forensics
(160820) #fitalk fileless malware forensics
INSIGHT FORENSIC
Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016
perillamint
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
NAVER D2 STARTUP FACTORY
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
YoungSu Son
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제
Lee Sang-Ho
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
YEONG-CHEON YOU
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
Cyworld AppStore (SK Communications)
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
Seungyong Lee
Mr.Robot CTF Write-Up (Korean version)
Mr.Robot CTF Write-Up (Korean version)
Sehan Lee
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
성훈 김
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
Peter YoungSik Yun
(120114) #fitalk bootkit threat evolution in 2011
(120114) #fitalk bootkit threat evolution in 2011
INSIGHT FORENSIC
IBM DataPower OS(DPOS) 의 CLI 설명
IBM DataPower OS(DPOS) 의 CLI 설명
JungWoon Lee
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Park JoongSoo
모바일 악성코드 분석 실무 요약(공개버전)_미완성 참고버전
모바일 악성코드 분석 실무 요약(공개버전)_미완성 참고버전
James (SeokHun) Hwang
Similar to [무료] 시스템해킹(해커스쿨문제풀이) 공개버전
(20)
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
리눅스 드라이버 실습 #1
리눅스 드라이버 실습 #1
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
(160820) #fitalk fileless malware forensics
(160820) #fitalk fileless malware forensics
Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
Mr.Robot CTF Write-Up (Korean version)
Mr.Robot CTF Write-Up (Korean version)
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
(120114) #fitalk bootkit threat evolution in 2011
(120114) #fitalk bootkit threat evolution in 2011
IBM DataPower OS(DPOS) 의 CLI 설명
IBM DataPower OS(DPOS) 의 CLI 설명
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
모바일 악성코드 분석 실무 요약(공개버전)_미완성 참고버전
모바일 악성코드 분석 실무 요약(공개버전)_미완성 참고버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
1.
0100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000110010010000100100010010 0000100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000100001110001010100011 ㈜타이거팀아카데미 시스템해킹 (해커스쿨 FTZ
1~20 문제풀이) 0100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000110010010000100100010010 0000100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000100001110001010100011 | 정보보호 전문가(모의해킹) 과정| ㈜타이거팀아카데미 시스템해킹 (해커스쿨 FTZ 1~20 문제풀이)
2.
0100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000110010010000100100010010 0000100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000100001110001010100011 Contents I. 시스템 해킹 1.
해커스쿨 FTZ 1~20 문제 풀이 0100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000110010010000100100010010 0000100001110001010100011001010010100011100000000001111001100000011111000000001110111011100011100011011100111000100001110001010100011
3.
시스템 해킹0. 문제
개요 20문제 개요 문제 내용 1. Backdoor 찾기 11. Stack Buffer overflow 2. Editor Shell Command 12. Buffer Overflow(2) 3. system() 취약점 13. Stack Guard 4. Xineted 백도어 14. 루틴분기 (1) © 2015 TigerTeamAcademy, Inc. All rights reserved. 3 5. Race Condition 15. 루틴분기(2) 6. System Interrupt 16. Function Pointer (1) 7. CipherText 17. Function Pointer (2) 8. Linux Password Crack 18. Pointer 9. Stack Buffer Overflow 19. Setreuid Shellcode 10. Shared Memory read/write 20. Format String Buffer Overflow
4.
시스템 해킹1. Backdoor
찾기 문제 분석 find 명령을 통해서 Setuid가 설정된 파일을 찾아 실행시키는 문제 시스템의 파일 퍼미션에 대해서 충분히 이해하고 시스템 기본 명령인 find 명령에 대해서 충분히 숙지하고 있는지 확인하는 문제 © 2015 TigerTeamAcademy, Inc. All rights reserved. 4 find 명령을 통해서 Setuid가 설정된 파일을 찾아 실행시키는 문제 시스템의 파일 퍼미션에 대해서 충분히 이해하고 시스템 기본 명령인 find 명령에 대해서 충분히 숙지하고 있는지 확인하는 문제
5.
시스템 해킹1. Backdoor
찾기 명령 실행 및 이해 퍼미션 옵션으로 (SetUID) 설정 파일만 소유자 옵션 표준 에러 출력 null 처리 © 2015 TigerTeamAcademy, Inc. All rights reserved. 5 Find 결과물에 대해서 2차 명령 실행
6.
시스템 해킹1. Backdoor
찾기 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 6 Level2의 배쉬쉘 실행
7.
시스템 해킹2. Editor
Shell Command 문제분석 find 명령을 통해서 Setuid가 설정된 파일을 찾아 실행시키는 문제 리눅스 편집기 프로그램에서 지원하는 외부 명령 실행옵션에 대해서 이해가 필요한 문제 © 2015 TigerTeamAcademy, Inc. All rights reserved. 7 find 명령을 통해서 Setuid가 설정된 파일을 찾아 실행시키는 문제 리눅스 편집기 프로그램에서 지원하는 외부 명령 실행옵션에 대해서 이해가 필요한 문제
8.
시스템 해킹2. Editor
Shell Command 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 8
9.
시스템 해킹3. system()
취약점 문제분석 char* strcpy(const char*, const char*); //문자열 복사 Char* strcat (char*, const char*); //문자열 덧붙이기 즉, cmd 변수에는 “dig @ argv[1] version.bin chaos txt” 복사 및 실행됨. 따라서, argv[1]을 통해서 임의의 명령 실행을 시도하고 패스워드를 찾아내는 문제임 웹해킹의 command injection과 동일한 공격임. dig 명령은 nslookup과 동일한 도메인의 IP 주소를 확인하는 명령으로 유닉스 계열 운영체제에 탑재되어 있음 © 2015 TigerTeamAcademy, Inc. All rights reserved. 9 char* strcpy(const char*, const char*); //문자열 복사 Char* strcat (char*, const char*); //문자열 덧붙이기 즉, cmd 변수에는 “dig @ argv[1] version.bin chaos txt” 복사 및 실행됨. 따라서, argv[1]을 통해서 임의의 명령 실행을 시도하고 패스워드를 찾아내는 문제임 웹해킹의 command injection과 동일한 공격임. dig 명령은 nslookup과 동일한 도메인의 IP 주소를 확인하는 명령으로 유닉스 계열 운영체제에 탑재되어 있음
10.
시스템 해킹3. system()
취약점 문제분석 dig [@server] [name] [query type] - server는 dns를 질의할 네임서버를 지정하며 이 옵션을 지정하지 않으면 /etc/resolv.conf를 참조하여 질의 - query type은 아래 중 하나가 올 수 있다. a : network address any : all query mx : mail exchanger soa : zone file의 SOA 정보 hinfo : host info axfr : zone transfer txt : txt 값 © 2015 TigerTeamAcademy, Inc. All rights reserved. 10 dig [@server] [name] [query type] - server는 dns를 질의할 네임서버를 지정하며 이 옵션을 지정하지 않으면 /etc/resolv.conf를 참조하여 질의 - query type은 아래 중 하나가 올 수 있다. a : network address any : all query mx : mail exchanger soa : zone file의 SOA 정보 hinfo : host info axfr : zone transfer txt : txt 값
11.
시스템 해킹3. system()
취약점 명령실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 11
12.
시스템 해킹4. xinetd
backdoor 문제분석 리눅스 서비스(telnet, ssh, finger, imap 등) 시스템의 구성 및 설정에 대해서 이해하는지를 확인 xinetd.d/ 디렉토리에 백도어 설정을 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 12 리눅스 서비스(telnet, ssh, finger, imap 등) 시스템의 구성 및 설정에 대해서 이해하는지를 확인 xinetd.d/ 디렉토리에 백도어 설정을 이해
13.
시스템 해킹4. xinetd
backdoor 문제분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 13
14.
시스템 해킹4. xinetd
backdoor 문제분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 14 포트가 열려 있으므로, 해당 데몬은 동작중이나 관련 프로그램이 없으므로 실행시 아무런 대응이 없음 따라서, 적절한 대응코드를 작성해서 처리하면 임의의 명령 수행이 가능함
15.
시스템 해킹4. xinetd
backdoor 명령실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 15 /bin/bash 로 설정하면~??
16.
시스템 해킹5. Race
condition 문제분석 파일 생성, 읽기, 쓰기 등의 과정에서 발생할 수 있는 Race Condition에 대한 이해도를 테스트 하는 문제 /tmp/level5.tmp 파일에 다음 레벨 비밀번호값이 기록되므로, 해당 파일이 삭제되기 전에 읽어서 화면에 출력하면 됨 © 2015 TigerTeamAcademy, Inc. All rights reserved. 16 파일 생성, 읽기, 쓰기 등의 과정에서 발생할 수 있는 Race Condition에 대한 이해도를 테스트 하는 문제 /tmp/level5.tmp 파일에 다음 레벨 비밀번호값이 기록되므로, 해당 파일이 삭제되기 전에 읽어서 화면에 출력하면 됨
17.
시스템 해킹5. Race
condition 문제분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 17 임시파일이 생성되나 즉시 삭제됨
18.
시스템 해킹5. Race
condition 문제분석 CPU 경쟁관계 Race condition 공격이 가능한 프로그램의 특징 • 임시 파일을 생성하는 프로그램이여야 한다. • 임시 파일 생성시 파일의 권한이 setuid(4755) 로 설정되어야 한다. • 공격자가 경쟁관계를 생립시키기 위해서는 임시파일명을 미리 파악하고 있어야 한다. • 레이스 컨디션에 대한 패치가 되지 않아야 한다. © 2015 TigerTeamAcademy, Inc. All rights reserved. 18 Process A Process B • 두 프로세스에게 동일하게 리소스 할당이 되지 않음 • 두 개 이상의 프로세스가 동시에 동작할 경우 서로 할당 받기 위한 경쟁에 빠짐 공격이 가능한 프로그램의 특징 • 임시 파일을 생성하는 프로그램이여야 한다. • 임시 파일 생성시 파일의 권한이 setuid(4755) 로 설정되어야 한다. • 공격자가 경쟁관계를 생립시키기 위해서는 임시파일명을 미리 파악하고 있어야 한다. • 레이스 컨디션에 대한 패치가 되지 않아야 한다.
19.
시스템 해킹5. Race
condition 문제분석 전제조건 루트 권한으로 구동되는 setuid 프로그램 위 프로그램 실행시 임시 파일 생성 공격자 위 프로그램 실행시 임시 파일 생성 © 2015 TigerTeamAcademy, Inc. All rights reserved. 19 공격자 위 프로그램 실행시 임시 파일 생성 레이스컨디션 돌입 실제 setuid 프로그램 실행 공격 성공 Root 권한 획득
20.
시스템 해킹5. Race
condition 문제분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 20 임시파일이 생성되나 즉시 삭제됨
21.
시스템 해킹5. Race
condition 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 21
22.
시스템 해킹5. Race
condition 쓰레드를 이용한 Race Condition 공격 코드 © 2015 TigerTeamAcademy, Inc. All rights reserved. 22
23.
시스템 해킹6. System
interrupt 문제 분석 로그인시 bbs 텔넷 접속 메뉴에서는 많이 사용하던 해킹 기법이라는 표시만 나타나고, 엔터키를 입력하면 아래 그림과 같은 메뉴가 나타남. 1,2,3 어떤 메뉴를 선택해도 접속이 제대로 이루어지지 않으며, 접속 자체가 종료되어 버림. © 2015 TigerTeamAcademy, Inc. All rights reserved. 23 로그인시 bbs 텔넷 접속 메뉴에서는 많이 사용하던 해킹 기법이라는 표시만 나타나고, 엔터키를 입력하면 아래 그림과 같은 메뉴가 나타남. 1,2,3 어떤 메뉴를 선택해도 접속이 제대로 이루어지지 않으며, 접속 자체가 종료되어 버림.
24.
시스템 해킹6. System
interrupt 명령 실행 및 이해 CTRL + C 인터럽트 © 2015 TigerTeamAcademy, Inc. All rights reserved. 24 my-pass 실행시
25.
시스템 해킹7. CipherText 문제
분석 /bin/level7 실행시 패스워드 입력창이 나타나며 제대로 입력하지 못할 경우, /bin/wrong.txt의 내용이 나타난다. 해당 메시지를 통해서 패스워드를 유추해 내야 함 © 2015 TigerTeamAcademy, Inc. All rights reserved. 25 /bin/level7 실행시 패스워드 입력창이 나타나며 제대로 입력하지 못할 경우, /bin/wrong.txt의 내용이 나타난다. 해당 메시지를 통해서 패스워드를 유추해 내야 함
26.
시스템 해킹7. CipherText 명령
실행 및 이해 - : 1, _: 0 이진코드를 문자열로 © 2015 TigerTeamAcademy, Inc. All rights reserved. 26 - : 1, _: 0 이진코드를 문자열로
27.
시스템 해킹8. Linux
password crack 문제 분석 기본 명령인 find의 size 옵션 사용법을 이해하는지 확인 패스워드 파일의 내용을 크랙할줄 아는지 확인 © 2015 TigerTeamAcademy, Inc. All rights reserved. 27 기본 명령인 find의 size 옵션 사용법을 이해하는지 확인 패스워드 파일의 내용을 크랙할줄 아는지 확인
28.
시스템 해킹8. Linux
password crack 문제 분석 [find size 옵션] -size [+파일크기/-파일크기/파일크기][bckw중 택1] : 파일크기와 일치하는 파일 b : 블록단위 512kb c : byte k : kbyte w : 2byte 워드 아무런 단위를 붙이지 않은 경우 : 디폴트 값 b 파일크기에 +1024k 이렇게 +를 붙이는 경우에는 크기가 1024kbyte 이상인 것을 찾고, -는 그 이하, +,-를 붙이지 않는 경우에는 그 크기의 파일을 찾음 ex)find / -size 1024k 시스템 전체에서 파일크기가 1024kbyte인 파일을 검색 © 2015 TigerTeamAcademy, Inc. All rights reserved. 28 [find size 옵션] -size [+파일크기/-파일크기/파일크기][bckw중 택1] : 파일크기와 일치하는 파일 b : 블록단위 512kb c : byte k : kbyte w : 2byte 워드 아무런 단위를 붙이지 않은 경우 : 디폴트 값 b 파일크기에 +1024k 이렇게 +를 붙이는 경우에는 크기가 1024kbyte 이상인 것을 찾고, -는 그 이하, +,-를 붙이지 않는 경우에는 그 크기의 파일을 찾음 ex)find / -size 1024k 시스템 전체에서 파일크기가 1024kbyte인 파일을 검색
29.
시스템 해킹8. Linux
password crack 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 29
30.
시스템 해킹9. Buffer
Overflow 문제 분석 버퍼가 메모리에서 사용되는 형태에 대한 이해 여부 실제 버퍼를 오버플로우 시켜 원하는 값을 넣을 수 있는지 여부 등을 확인 예제를 보면, buf에 40문자까지 입력 받고 저장하는데, buf를 초과하여 buf2에 go라는 문자열을 넣을 수 있는지 체크 © 2015 TigerTeamAcademy, Inc. All rights reserved. 30 버퍼가 메모리에서 사용되는 형태에 대한 이해 여부 실제 버퍼를 오버플로우 시켜 원하는 값을 넣을 수 있는지 여부 등을 확인 예제를 보면, buf에 40문자까지 입력 받고 저장하는데, buf를 초과하여 buf2에 go라는 문자열을 넣을 수 있는지 체크
31.
시스템 해킹9. Buffer
Overflow 문제 분석 버퍼간 거리 0x10 -> 16(10진수) © 2015 TigerTeamAcademy, Inc. All rights reserved. 31 buf[10] dummy buf2[10] dummy SFP RET 10 6 10 6 4 4 스택 증가 방향 낮은 메모리 높은 메모리 단위 : 바이트
32.
시스템 해킹9. Buffer
Overflow 명령 실행 및 이해 buf[10] dummy 10 6 dummy SFP RET 6 4 482 buf2[10] go가 입력되어야 함 스택 증가 방향 낮은 메모리 높은 메모리 © 2015 TigerTeamAcademy, Inc. All rights reserved. 32
33.
시스템 해킹10. Shared
memory read/write 문제 분석 공유메모리에 대한 기본 개념 이해 간단한 공유메모리 코딩 참고) 공유메모리 코딩을 통해서 비밀번호 획득이 안될경우 program 내의 실행 프로그램을 재실행 해보는 것이 좋음 © 2015 TigerTeamAcademy, Inc. All rights reserved. 33 공유메모리에 대한 기본 개념 이해 간단한 공유메모리 코딩 참고) 공유메모리 코딩을 통해서 비밀번호 획득이 안될경우 program 내의 실행 프로그램을 재실행 해보는 것이 좋음
34.
시스템 해킹10. Shared
memory read/write 문제 분석 Process A Process B Process N… 메모리공간 A 메모리공간 B 메모리공간 N… 메모리 공유를 하지 않는 상황 © 2015 TigerTeamAcademy, Inc. All rights reserved. 34 Process A Process B Process N… 공유 메모리공간 공유 메모리 사용 메모리 공간 생성 공유사용 공유 사용공유 사용 IPC(Inter Process Communication) 통신
35.
시스템 해킹10. Shared
memory read/write 문제 분석 © 2015 TigerTeamAcademy, Inc. All rights reserved. 35 관련 내용 접근 불가 또는 없음 실행내역 확인
36.
시스템 해킹10. Shared
memory read/write 공유메모리 생성 코드 © 2015 TigerTeamAcademy, Inc. All rights reserved. 36 //공유메모리를 BUFSIZE 만큼 생성함 //프로세스에서 공유 메모리 공간을 사용할 수 있게 attach 함 //공유 메모리 공간에 있는 값을 buf에 복사함 //프로세스에서 공유 메모리의 연결을 분리
37.
시스템 해킹10. Shared
memory read/write 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 37 //공유 메모리 ID 읽어오기 //프로세스에서 공유 메모리 공간을 사용할 수 있게 attach 함 //공유 메모리 공간의 값을 복사해옴 //공유 메모리 내역 해제
38.
시스템 해킹11. Stack
buffer overflow 문제 분석 버퍼 오버플로우의 취약점에 대한 공격 기법 이해 포맷 스트링의 개념 이해 및 취약점에 대한 공격 기법 © 2015 TigerTeamAcademy, Inc. All rights reserved. 38 버퍼 오버플로우의 취약점에 대한 공격 기법 이해 포맷 스트링의 개념 이해 및 취약점에 대한 공격 기법 버퍼 오버플로우 취약점 포맷스트링 오버플로우 취약점
39.
시스템 해킹11. Stack
buffer overflow 문제 분석 4bytes 264 bytes 4bytes str (256 + 8(dummy)) ???? ???? 스택 증가 방향 / 낮은 메모리 주소 © 2015 TigerTeamAcademy, Inc. All rights reserved. 39 4bytes 4bytes 4bytes 4bytes 4bytesenv argv argc (0x00000002) RET SFP 높은 메모리 주소
40.
4bytes 264 bytes 4bytes 시스템 해킹11. Stack
buffer overflow 명령 실행 및 이해 str (256 + 8(dummy)) ???? ???? 스택 증가 방향 / 낮은 메모리 주소 4bytes 4bytes 4bytes 4bytes 4bytes © 2015 TigerTeamAcademy, Inc. All rights reserved. 40 env argv argc (0x00000002) RET SFP 높은 메모리 주소
41.
시스템 해킹11. Stack
buffer overflow eggshell.c © 2015 TigerTeamAcademy, Inc. All rights reserved. 41 egg.c
42.
시스템 해킹11. Stack
buffer overflow eggshell.c © 2015 TigerTeamAcademy, Inc. All rights reserved. 42
43.
시스템 해킹12. Buffer
Overflow(2) 문제 분석 버퍼 오버플로우 심화 문제 버퍼의 주소가 랜덤하게 변함 환경변수를 이용한 공격 및 랜덤 버퍼를 무한 루프로 공격하는 방법 © 2015 TigerTeamAcademy, Inc. All rights reserved. 43 버퍼 오버플로우 심화 문제 버퍼의 주소가 랜덤하게 변함 환경변수를 이용한 공격 및 랜덤 버퍼를 무한 루프로 공격하는 방법
44.
시스템 해킹12. Buffer
Overflow(2) 문제 분석 SFP str (256 + 8(dummy)) 264 bytes 4bytes 4bytes 264bytes 버퍼 © 2015 TigerTeamAcademy, Inc. All rights reserved. 44 env argv argc (0x00000002) RET 4bytes 4bytes 4bytes 4bytes
45.
시스템 해킹12. Buffer
Overflow(2) 명령 실행 및 이해 버퍼의 시작 © 2015 TigerTeamAcademy, Inc. All rights reserved. 45 dummy buf SPF RET
46.
시스템 해킹12. Buffer
Overflow(2) 명령 실행 및 이해 AAA…AAA 256 dummy 8 SFP 4 RET 4 © 2015 TigerTeamAcademy, Inc. All rights reserved. 46 AAA…AAA 256 AAAA…AAA 8 AAAA 4 AAAA 4 리턴 주소 조작으로 Segmentation fault 발생
47.
시스템 해킹12. Buffer
Overflow(2) 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 47
48.
시스템 해킹12. Buffer
Overflow(2) 쉘코드를 버퍼에 직접 입력랜덤하게 변함 /bin/sh 실행시키는 쉘코드 © 2015 TigerTeamAcademy, Inc. All rights reserved. 48 버퍼의 주소가 랜덤하게 변경되어 앞부분에 널코드를 주고 임의의 위치를 공략 위치가 맞을때까지 무한루프
49.
시스템 해킹13. Stack
Guard 문제 분석 Stack Guard에 대한 이해 및 우회 기법 © 2015 TigerTeamAcademy, Inc. All rights reserved. 49
50.
시스템 해킹13. Stack
Guard 명령 실행 및 이해 버퍼의 시작과 끝 stack guard [4bytes] – 0x1234567 dummy [12bytes] buf [1024bytes] © 2015 TigerTeamAcademy, Inc. All rights reserved. 50 …생략… 스택가드값 SPF RETdummy dummy RET SPF dummy [8bytes] stack guard [4bytes] – 0x1234567
51.
시스템 해킹13. Stack
Guard 명령 실행 및 이해 dummy [12bytes] buf [1024bytes] AAAA…AAAA AAAAAAA……AAAAAAA1024 12 © 2015 TigerTeamAcademy, Inc. All rights reserved. 51 RET SPF dummy [8bytes] stack guard [4bytes] – 0x1234567 특정 주소 변조 AAAA AAAA 0x1234567 사전에 값을 읽어 강제로 입력시킴 4 8 4 4 python -c ‘print “A”*1036+”x67x45x23x01”+”A”*12+”주소값”’
52.
시스템 해킹13. Stack
Guard 명령 실행 및 이해 EGG환경변수로 리턴 © 2015 TigerTeamAcademy, Inc. All rights reserved. 52 EGG환경변수로 리턴 stack guard 값 재복사
53.
시스템 해킹14. 루틴
분기 (1) 문제 분석 버퍼오버플로우 문제~^^ © 2015 TigerTeamAcademy, Inc. All rights reserved. 53 버퍼오버플로우 문제~^^
54.
시스템 해킹14. 루틴
분기 (1) 문제 분석 버퍼 크기 : 56 © 2015 TigerTeamAcademy, Inc. All rights reserved. 54 buf 20 check 4 crap 4 dummy 28 SFP 4 RET 4 56bytes 하지만, 여기서 문제점은 dummy의 정확한 위치를 모른다는 점 if 문을 통과하기 위해서는 check 값의 위치를 정확하게 알아내는 것이 매우 중요함
55.
시스템 해킹14. 루틴
분기 (1) 문제 분석 buf check crap 40bytes 4bytes 56bytes © 2015 TigerTeamAcademy, Inc. All rights reserved. 55 buf 20 dummy 20 check 4 crap 4 dummy 8 SFP 4 RET 4 0xdeadbeef
56.
시스템 해킹14. 루틴
분기 (1) 명령 실행 및 이해 40bytes 채우기 If구문을 통과하기 위한 check 값 채우기 © 2015 TigerTeamAcademy, Inc. All rights reserved. 56 If구문을 통과하기 위한 check 값 채우기
57.
시스템 해킹15. 루틴
분기 (2) 문제 분석 14번과 매우 유사한 문제, 다만 포인터만 사용했음 © 2015 TigerTeamAcademy, Inc. All rights reserved. 57 14번과 매우 유사한 문제, 다만 포인터만 사용했음
58.
시스템 해킹15. 루틴
분기 (2) 문제 분석 버퍼 크기 : 56 하지만, 여기서 문제점은 dummy의 정확한 위치를 모른다는 점 if 문을 통과하기 위해서는 check 값의 위치를 정확하게 알아내는 것이 매우 중요함 © 2015 TigerTeamAcademy, Inc. All rights reserved. 58 buf 20 check 4 crap 4 dummy 28 SFP 4 RET 4 56bytes 하지만, 여기서 문제점은 dummy의 정확한 위치를 모른다는 점 if 문을 통과하기 위해서는 check 값의 위치를 정확하게 알아내는 것이 매우 중요함 0xdeadbeef
59.
시스템 해킹15. 루틴
분기 (2) 명령 실행 및 이해 buf check crap 40bytes 4bytes 20 20 56bytes 4 4 8 4 4 © 2015 TigerTeamAcademy, Inc. All rights reserved. 59 buf 20 dummy 20 check 4 crap 4 dummy 8 SFP 4 RET 4 0xdeadbeef
60.
시스템 해킹15. 루틴
분기 (2) 명령 실행 및 이해 buf : 20bytes dummy: 20bytes © 2015 TigerTeamAcademy, Inc. All rights reserved. 60 check : 4bytes crap: 4bytes dummy: 8bytes SPF : 4bytes RET : 4bytescheck 값이 0으로 할당
61.
시스템 해킹15. 루틴
분기 (2) 명령 실행 및 이해 20 20 56bytes 배열의 주소값 4 crap 4 dummy 8 SFP 4 RET 4 0xdeadbeef… 0xdeadbeef … 배열의 주소 포인터를 원하는 곳으로 이동하여 공격 배열의 주소가 랜덤하게 변하므로 다양한 테스트 필요 © 2015 TigerTeamAcademy, Inc. All rights reserved. 61 배열의 주소 포인터를 원하는 곳으로 이동하여 공격 배열의 주소가 랜덤하게 변하므로 다양한 테스트 필요 - 환경변수에 값을 저장하고 푸는 방법은??^^ - shellcode를 직접 입력하여 실행하는 방법은??^^
62.
시스템 해킹16. Function
Pointer (1) 문제 분석 함수 주소를 위변조하여 임의의 함수를 실행하도록 하는 문제 call() 함수 호출시 printit()이 아닌 shell() 함수가 호출되도록 하는 것이 문제임 © 2015 TigerTeamAcademy, Inc. All rights reserved. 62 함수 주소를 위변조하여 임의의 함수를 실행하도록 하는 문제 call() 함수 호출시 printit()이 아닌 shell() 함수가 호출되도록 하는 것이 문제임
63.
시스템 해킹17. Function
Pointer (1) 문제 분석 버퍼 크기 : 56 하지만, 여기서 문제점은 dummy의 정확한 위치를 모른다는 점 함수호출 주소를 변조하기 위해서는 함수 포인터의 위치를 정확하게 알아내는 것이 매우 중요함 © 2015 TigerTeamAcademy, Inc. All rights reserved. 63 buf 20 void* &printit 4 crap 4 dummy 28 SFP 4 RET 4 56bytes 하지만, 여기서 문제점은 dummy의 정확한 위치를 모른다는 점 함수호출 주소를 변조하기 위해서는 함수 포인터의 위치를 정확하게 알아내는 것이 매우 중요함 func printit() func shell()
64.
시스템 해킹17. Function
Pointer (1) 명령 실행 및 이해 © 2015 TigerTeamAcademy, Inc. All rights reserved. 64 buf 20 dummy 20 56bytes func printit() 4 crap 4 dummy 8 printit 함수 주소값 변경 shell함수
65.
시스템 해킹17. Function
Pointer (1) 명령 실행 및 이해 앞 buf 40자 채우기 © 2015 TigerTeamAcademy, Inc. All rights reserved. 65 함수 포인터값 shell 함수 주소값으로 대체 - 환경변수에 값을 저장하고 푸는 방법은??^^
66.
시스템 해킹17. Function
Pointer (2) 문제 분석 setreuid() 함수 호출뒤에 call 함수를 호출하는데, 이 함수의 호출을 임의의 쉘코드 주소로 변경하는 것으로 임의의 쉘코드 등록과 실행 방법을 이해하는 묻는 문제임 © 2015 TigerTeamAcademy, Inc. All rights reserved. 66 setreuid() 함수 호출뒤에 call 함수를 호출하는데, 이 함수의 호출을 임의의 쉘코드 주소로 변경하는 것으로 임의의 쉘코드 등록과 실행 방법을 이해하는 묻는 문제임
67.
시스템 해킹17. Function
Pointer (2) 문제 분석 buf 20 dummy 20 56bytes func printit() 4 crap 4 dummy 8 * 스택의 구조는 앞 문제와 계속 동일함 © 2015 TigerTeamAcademy, Inc. All rights reserved. 67 func printit() printit 함수Shell코드 - 임의의 위치로 shellcode 로딩 - printit 함수 주소값을 shellcode 주소값으로 변경 - shellcode 실행
68.
시스템 해킹17. Function
Pointer (2) 명령 실행 및 이해 환경변수 EGG에 shellcode 등록하고 관련 주소 확인하는 명령 (export 명령으로도 가능함) © 2015 TigerTeamAcademy, Inc. All rights reserved. 68 - shellcode를 버퍼에 입력하고 실행하려면??^^
69.
시스템 해킹18. Pointer 문제
분석 cont 값이 string 버퍼에서 사용되므로 이동처리 필요 0x80이 아니면 버퍼에 입력 © 2015 TigerTeamAcademy, Inc. All rights reserved. 69 실행시켜야 할 대상 코드 하지만, check는 0x00 무한루프 돌다가 check 값이 0xdeadbeef이면 끝~^^
70.
시스템 해킹18. Pointer 명령
실행 및 이해 256bytes © 2015 TigerTeamAcademy, Inc. All rights reserved. 70 112bytes 4bytes 4bytes 4bytes 132bytes buf (112) check (4) x (4) count (4) fd_set (132) 낮은 메모리 높은 메모리
71.
시스템 해킹18. Pointer 명령
실행 및 이해 buf (112) check (4) x (4) count (4) fd_set (132) 낮은 메모리 높은 메모리 정상 데이터 입력시 문제 의도 변조대상 © 2015 TigerTeamAcademy, Inc. All rights reserved. 71 문제 의도 버퍼의 이전 위치에서도 데이터 읽기가 가능함 hint를 보면 0x80을 통해서 – 위치 이동이 가능함
72.
시스템 해킹18. Pointer 명령
실행 및 이해 string 버퍼의 위치를 뒤로 4bytes 이동 If 조건값을 해당 위치에 입력 © 2015 TigerTeamAcademy, Inc. All rights reserved. 72 If 조건값을 해당 위치에 입력
73.
시스템 해킹19. Setreuid
Shellcode 문제 분석 문제는 문자열을 입력받아서 출력하는 것으로 종료함 하지만, buffer overflow 취약점이 존재하고, 이를 이용하여 쉘을 실행할 수 있는 취약점이 존재함 단, shellcode에 setreuid() 함수를 포함해야 함 (즉, 쉘코드 작성 능력이 있는지를 확인함) © 2015 TigerTeamAcademy, Inc. All rights reserved. 73 문제는 문자열을 입력받아서 출력하는 것으로 종료함 하지만, buffer overflow 취약점이 존재하고, 이를 이용하여 쉘을 실행할 수 있는 취약점이 존재함 단, shellcode에 setreuid() 함수를 포함해야 함 (즉, 쉘코드 작성 능력이 있는지를 확인함)
74.
시스템 해킹19. Setreuid
Shellcode 문제 분석 40bytes 확보 © 2015 TigerTeamAcademy, Inc. All rights reserved. 74 RET (4) SPF (4) dummy (20) buf (20) 낮은 메모리 높은 메모리
75.
시스템 해킹19. Setreuid
Shellcode 명령 실행 및 이해 EGG 환경변수를 이용한 공격 © 2015 TigerTeamAcademy, Inc. All rights reserved. 75 buf 를 “A”로 채우고 리턴주소를 EGG로 변경 하지만, 쉘코드에 setreuid() 함수 사용이 없어 권한 상승에 실패함
76.
시스템 해킹19. Setreuid
Shellcode 명령 실행 및 이해 EGG쉘코드에 다음 코드를 추가 setreuid(3100); //추가코드 내용 © 2015 TigerTeamAcademy, Inc. All rights reserved. 76 shellcode 작성을 공부하세요~^^
77.
시스템 해킹20. Format
string buffer overflow (2) 문제 분석 setreuid() 함수 호출뒤에 call 함수를 호출하는데, 이 함수의 호출을 임의의 쉘코드 주소로 변경하는 것으로 임의의 쉘코드 등록과 실행 방법을 이해하는 묻는 문제임 © 2015 TigerTeamAcademy, Inc. All rights reserved. 77 setreuid() 함수 호출뒤에 call 함수를 호출하는데, 이 함수의 호출을 임의의 쉘코드 주소로 변경하는 것으로 임의의 쉘코드 등록과 실행 방법을 이해하는 묻는 문제임
78.
시스템 해킹20. Format
string buffer overflow (2) 문제 분석 #include <stdio.h> void main(void) { char s[] = “가나다"; char c = 'A'; int i = 255; unsigned long iUL = 0xFFFFFFFFUL; float f = 1.234f; printf("%sn", s); // 출력 결과: 가나다 printf("%dn", i); // 출력 결과: 255 printf("%Xn", i); // 출력 결과: FF printf("%s %c %d %u %f %0.3f %X %x %02Xn", s, c, i, iUL, f, f, i, 255, 10); // 출력 결과: 가나다 A 255 4294967295 1.234000 1.234 FF ff 0A } 포맷문자 내용 %s 문자열 %c 문자 1개 %d +-부호 있는 정수 %u +-부호 없는 정수 %f 실수 실수 (소수점 3자리까지 나오게) © 2015 TigerTeamAcademy, Inc. All rights reserved. 78 printf() / sprintf() / fprintf() 함수 속의 퍼센트(%) 기호들은, "Format Specifier" 라고 하는데, 출력 형식을 지정하는 것입니다. #include <stdio.h> void main(void) { char s[] = “가나다"; char c = 'A'; int i = 255; unsigned long iUL = 0xFFFFFFFFUL; float f = 1.234f; printf("%sn", s); // 출력 결과: 가나다 printf("%dn", i); // 출력 결과: 255 printf("%Xn", i); // 출력 결과: FF printf("%s %c %d %u %f %0.3f %X %x %02Xn", s, c, i, iUL, f, f, i, 255, 10); // 출력 결과: 가나다 A 255 4294967295 1.234000 1.234 FF ff 0A } %0.3f 실수 (소수점 3자리까지 나오게) %X 16진수 대문자로 %x 16진수 소문자로 %02X 16진수 대문자로. 2자리 헥사에서, 앞의 빈 칸 있으면 0으로 채움
79.
printf(“AAAA%08x……) 44 ????? 44 시스템 해킹20. Format
string buffer overflow (2) 명령 실행 및 이해 AAAA%x 80 dummy 8 4 SPF 4 RET 4 %x A A A A 여기부분의 첫글짜 포맷문자열은 다음 주소글짜를 표기함 ($esp 값이 +4만큼 이동함) 만약 해당 부분이 없다면 4f 대신 AAAA값 41414141이 출력되어야 함 fgets나 setreuid가 사용(??) 또는 반환 © 2015 TigerTeamAcademy, Inc. All rights reserved. 79 %x A A A A %x A A A A 여기부분의 첫글짜 포맷문자열은 다음 주소글짜를 표기함 ($esp 값이 +4만큼 이동함) 만약 해당 부분이 없다면 4f 대신 AAAA값 41414141이 출력되어야 함
80.
시스템 해킹20. Format
string buffer overflow (2) 문제 분석 %08x는 16진수 소문자 표현 포맷. 포맷을 사용할때마다 주소값이 4바이트씩 뒤로 이동됨 그리고 인해서, 버퍼의 시작점을 유추할 수 있음 printf(“AAAA%08x……) 44 ???? 4 3101 4 © 2015 TigerTeamAcademy, Inc. All rights reserved. 80 AAAA 80 dummy 8 96bytes (추정) 4 SPF 4 RET 444 버퍼의 시작점 파악 완료~^^ 버퍼의 시작점은 %08x 개수를 늘려가면서 파악이 가능함
81.
시스템 해킹20. Format
string buffer overflow (2) 문제 분석 [서식 문자 : %n] %n이 나오기 전에 출력된 모든 글자수(자릿수)를 계산하여 스택의 다음 4바이트에 있는 내용을 주소로 생각하고 그 주소에 해당 곳에 자릿수 값(숫자)를 입력함 printf(“AAAA%08x……) 44 ????? 44 AAAA%x 80 dummy 8 4 SPF 4 RET 4 © 2015 TigerTeamAcademy, Inc. All rights reserved. 81 %n A A A A %n A A A A AAAA%n 이라고 입력했을 경우 1. “AAAA”를 출력 2. “%n”을 만나면 출력된 글자수 4를 카운트 3. 스택의 다음 4바이트 “0x41414141” 주소에 해당 값 4를 기록함 (메모리의 특정 위치에 값을 조작할 수 있음을 의미함) 4. %100c%n을 사용하면 100이라는 숫자와 4가 더해져 104가 기록 가능함
82.
시스템 해킹20. Format
string buffer overflow (2) 포맷스트링 공격 공식~^^ AAAA낮은주소AAAA높은주소%8x%8x%8x%64128c%n%50519c%n %n %50519c %n %64128c %8x %8x %8x 높은주소 AAAA 낮은주소 AAAA %n %50519c %n %64128c %8x %8x %8x 높은주소 AAAA 낮은주소 AAAA 1. “AAAA낮은주소AAAA높은주소는”까지는 출력 2. 현재 esp가 printf에 있기 때문에 버퍼까지 이동을 시키기 위해서 %8x를 3번 사용함 3. 이미 출력된 값이 40글자이고 64128글자값이 합산됨 4. %c를 만나서 esp 값이 버퍼 시작점 “AAAA”에서 낮은주소로 이동함 5. %n을 만나서 해당 주소값에 합산된 숫자값이 기록됨 (낮은주소값에 2byte만 기록함). esp 값 또한 4바이트 이동함 6. 이미 출력된 모든 값들을 포함하여 50519값을 추가하여 값을 합산함 7. %c를 만나서 esp 값이 “AAAA”에서 다시 높은 주소로 이동함 8. %n을 만나서 해당 부분에 합산된 값을 기록함 이동할 주소번지 (쉘코드주소) © 2015 TigerTeamAcademy, Inc. All rights reserved. 82 %n %50519c %n %64128c %8x %8x %8x 높은주소 AAAA 낮은주소 AAAA %n %50519c %n %64128c %8x %8x %8x 높은주소 AAAA 낮은주소 AAAA …… printf(…..)printf(…..) 1. “AAAA낮은주소AAAA높은주소는”까지는 출력 2. 현재 esp가 printf에 있기 때문에 버퍼까지 이동을 시키기 위해서 %8x를 3번 사용함 3. 이미 출력된 값이 40글자이고 64128글자값이 합산됨 4. %c를 만나서 esp 값이 버퍼 시작점 “AAAA”에서 낮은주소로 이동함 5. %n을 만나서 해당 주소값에 합산된 숫자값이 기록됨 (낮은주소값에 2byte만 기록함). esp 값 또한 4바이트 이동함 6. 이미 출력된 모든 값들을 포함하여 50519값을 추가하여 값을 합산함 7. %c를 만나서 esp 값이 “AAAA”에서 다시 높은 주소로 이동함 8. %n을 만나서 해당 부분에 합산된 값을 기록함 à 이제 낮은주소, 높은주소인 공격 타겟 주소만 찾으면 됨 변조할 주소번지 (ret 대용번지)
83.
시스템 해킹20. Format
string buffer overflow (2) 변조할 공격 주소번지 찾기 …생략… © 2015 TigerTeamAcademy, Inc. All rights reserved. 83 덮어쓸 주소 심볼 삭제 (.dtors값으로 컴파일시 제거) …생략… 공격대상과 4bytes 차이남 GNU 컴파일러로 컴파일된 프로그램은 생성자와 소멸자를 위해 .dtors와 .ctors를 생성함. .ctors는 main() 시작전, .dtors는 exit 콜로 종료전에 호출됨. 따라서 .dtors 영역을 이용하여 흐름을 조작할 수 있으며, 주소는 dtors + 4바이트 지점임 à 따라서 덮어쓰야할 공격주소는 0x08049598
84.
시스템 해킹20. Format
string buffer overflow (2) 명령 실행 및 이해 환경변수 주소값 변환 bfff à 1bff – 62159 = 52528 f2cf à 62159 – 40 = 62119 덮어쓰야 할 공격주소는 0x08049598 © 2015 TigerTeamAcademy, Inc. All rights reserved. 84 …생략… AAAA낮은주소AAAA높은주소%8x%8x%8x%64128c%n%50519c%n
85.
시스템 해킹추천도서 © 2015
TigerTeamAcademy, Inc. All rights reserved. 85
86.
01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 | 정보보호 컨설팅(모의해킹
분야) 전문가 과정 |
Download now