SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
이세한 (Alchemic)
www.facebook.com/SeHan.Lee.KoreaTech
www.softtrack.co.kr
0x01. What is Race Condition?
0x02. The Basic of Race Condition Attack
0x03. The Story of Race Condition
0x04. DEMO
0x05. How can we prevent Race Condition?
자원을 동시에 사용하려는 프로세스들이 자원 사용을 하기 위해
프로세스들이 경쟁을 하는 것.
프로세스들이 경쟁하는 것을 이용하여 관리자 권한을 얻는 공격 방법.
1. 취약 프로그램이 생성하는 임시 파일의 이름을 파악.
2. 생성될 임시 파일과 같은 이름의 파일을 생성.
3. 이에 대한 심볼릭 링크를 생성.
4. 원본 파일을 지운 채 취약 프로그램이 심볼릭 링크를 건 파일과
같은 파일을 생성할 때를 기다린다.
5. 생성되었을 때, 심볼릭 링크를 이용해 파일 내용을 변경.
6. 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고
프로세스를 진행시킬 것이고, 공격자는 관리자 권한으로 실행되는
프로그램에 끼어들어 무언가를 할 수 있는 여지를 만든다.
실습환경 : Red Hat Linux 9.0
- 첫 번째 -
관리자는 일반 사용자들이 자유롭게 파일을 생성하고 내용을 입력할 수 있게 하도록 다음 소스 코드를
짜고, 실행 파일을 생성한 뒤, setuid 설정을 하여 일반 사용자도 이용할 수 있도록 합니다.
해커는 소스의 취약점을 분석하여 다음과 같은 행동을 합니다.
- 두 번째 -
자신이 만든 프로그램의 취약점으로 인해 해커가 관리자 권한을 취득한 것을 알아챈 관리자는 이를 막기 위해
소스코드를 수정합니다.
즉, 사용자들이 관리자가 지정한 파일만 수정할 수 있도록 소스를 수정합니다. 하지만 해커는 심볼릭 링크를
이용하여 다시 관리자 권한을 취득합니다. 심볼릭 링크를 통해 리눅스의 계정 관리 파일인 /etc/passwd 에
접근이 가능한 것입니다.
심볼릭 링크 생성
- 세 번째 –
관리자는 최후의 수단으로 자신이 지정한 파일을 지우고 새로 생성하도록 소스를 수정합니다. 이렇게 하면
기존에 생성되었던 심볼릭 링크 파일은 삭제가 되고 새로운 파일이 생성되어 해커가 이용할 수 없습니다.
결국 해커는 최후의 수단으로 Race Condition Attack 을 수행하려고 준비합니다.
attack1.c
attack2.c
먼저, 해커는 attack1 이라는 소스를 짜서 프로그램을 만든 뒤, 실행시킵니다.
다음으로, 해커는 attack2 라는 소스를 짜서 프로그램을 만든 뒤, 실행시킵니다.
Process
attack1
Process
attack2
sample.txt 삭제
sample.txt 생성
심볼릭 링크 생성
(X)
sample.txt 삭제
sample.txt 생성
심볼릭 링크 생성
(X)
심볼릭 링크 생성
sample.txt 생성
(명령어 수행)
Sample.txt 삭제
(O)
sample.txt 삭제
sample.txt 생성
심볼릭 링크 생성
(X)
sample.txt 삭제
sample.txt 생성
심볼릭 링크 생성...
...
• if(lstat(filename, &st) != 0)
• lstat함수는 파일의 심볼릭 링크의 유뮤에 대한 정보를 반환해준다.
• if(!s_ISREG(st.st_mode))
• 구조체 st에 대한 st_mode 값으로 파일의 종류에 대한
것을 확인한다.
• S_ISBLK- 블록파일 테스트
• S_ISCHR- 문자파일 테스트
• S_ISDIR- 디렉토리 테스트
• S_ISFIFO- FIFO 테스트
• S_ISREG- 일반적인 파일 테스트
• S_ISLNK- 심볼릭 링크 테스트
• if(st.st_uid != 0)
• 생성된 파일의 소유자가 root가 아닌 경우를 검사한다. 공격자에 의
해 자신이 생성한 파일이 삭제되고, 접근하고자 하는 파일이 일반
계정 소유의 파일인지 확인한다.
• if(fstat(fd, &st2) ! = 0)
• 파일 포인터에 의해서 열려진 파일의 정보를 모아 st2구조체에 이
를 전달한다.
• if(st.st_ino != st2.st_ino) || st.st_dev != st2.st_dev)
• 최초 파일에 대한 정보를 저장하고 있는 st와 파일을 연 후의 st2에
저장된 I 노드 값과 장치(device)값이 변경되었는지 확인한다.
Thank you!!

Weitere ähnliche Inhalte

Andere mochten auch

취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명
eungjin cho
 
리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진
리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진
리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진
eungjin cho
 
오피스세이퍼 소개자료
오피스세이퍼 소개자료오피스세이퍼 소개자료
오피스세이퍼 소개자료
silverfox2580
 
[C1]웹서비스, 빠를수록 좋다
[C1]웹서비스, 빠를수록 좋다[C1]웹서비스, 빠를수록 좋다
[C1]웹서비스, 빠를수록 좋다
NAVER D2
 
Packet Tracer Simulation Lab Layer3 Routing
Packet Tracer Simulation Lab Layer3 RoutingPacket Tracer Simulation Lab Layer3 Routing
Packet Tracer Simulation Lab Layer3 Routing
Johnson Liu
 

Andere mochten auch (16)

취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명취약점(Vulnerability) db 구조 설명
취약점(Vulnerability) db 구조 설명
 
Packet tracer 설치 및 사용법
Packet tracer 설치 및 사용법Packet tracer 설치 및 사용법
Packet tracer 설치 및 사용법
 
리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진
리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진
리스크와 컴플라이언스 관점의 취약점 추적관리 유젠아이 조응진
 
서울호서전문학교 사이버해킹보안과
서울호서전문학교 사이버해킹보안과 서울호서전문학교 사이버해킹보안과
서울호서전문학교 사이버해킹보안과
 
오피스세이퍼 소개자료
오피스세이퍼 소개자료오피스세이퍼 소개자료
오피스세이퍼 소개자료
 
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
 
보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법
 
Real time Scheduling in Operating System for Msc CS
Real time Scheduling in Operating System for Msc CSReal time Scheduling in Operating System for Msc CS
Real time Scheduling in Operating System for Msc CS
 
The comprehensive guide for optimizing the performance of mobile HTML5 Web ap...
The comprehensive guide for optimizing the performance of mobile HTML5 Web ap...The comprehensive guide for optimizing the performance of mobile HTML5 Web ap...
The comprehensive guide for optimizing the performance of mobile HTML5 Web ap...
 
2011년 보안 이슈와 2012년 보안 위협 예측
2011년 보안 이슈와 2012년 보안 위협 예측2011년 보안 이슈와 2012년 보안 위협 예측
2011년 보안 이슈와 2012년 보안 위협 예측
 
1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법1.악성코드 최신 동향과 기법
1.악성코드 최신 동향과 기법
 
악성코드 분석 도구
악성코드 분석 도구악성코드 분석 도구
악성코드 분석 도구
 
Embedded linux 악성코드 동향 20150323 v1.0 공개판
Embedded linux 악성코드 동향 20150323 v1.0 공개판Embedded linux 악성코드 동향 20150323 v1.0 공개판
Embedded linux 악성코드 동향 20150323 v1.0 공개판
 
[C1]웹서비스, 빠를수록 좋다
[C1]웹서비스, 빠를수록 좋다[C1]웹서비스, 빠를수록 좋다
[C1]웹서비스, 빠를수록 좋다
 
Packet Tracer Simulation Lab Layer3 Routing
Packet Tracer Simulation Lab Layer3 RoutingPacket Tracer Simulation Lab Layer3 Routing
Packet Tracer Simulation Lab Layer3 Routing
 
An Introduction to Python Concurrency
An Introduction to Python ConcurrencyAn Introduction to Python Concurrency
An Introduction to Python Concurrency
 

Ähnlich wie 레이스 컨디션 기초(Basic Race Condition)

파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어
Chulgyu Shin
 

Ähnlich wie 레이스 컨디션 기초(Basic Race Condition) (20)

Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
2.악성코드와 분석 방안
2.악성코드와 분석 방안2.악성코드와 분석 방안
2.악성코드와 분석 방안
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례
 
악성코드와 분석 방안
악성코드와 분석 방안악성코드와 분석 방안
악성코드와 분석 방안
 
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
 
3. 악성코드 분석 사례
3. 악성코드 분석 사례3. 악성코드 분석 사례
3. 악성코드 분석 사례
 
웨일 보안 이야기
웨일 보안 이야기웨일 보안 이야기
웨일 보안 이야기
 
파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어
 
2007년 6월 악성코드 최신 동향과 대응
2007년 6월 악성코드 최신 동향과 대응2007년 6월 악성코드 최신 동향과 대응
2007년 6월 악성코드 최신 동향과 대응
 
Memory forensics with volatility
Memory forensics with volatilityMemory forensics with volatility
Memory forensics with volatility
 
1. 미티어의 폴더구조
1. 미티어의 폴더구조1. 미티어의 폴더구조
1. 미티어의 폴더구조
 
SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)
SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)
SECCON 2016 Online CTF [Memory Analysis] Write-Up (ver.korean)
 
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
200725 AWS 클라우드 컴퓨팅으로 배우는 생물정보학 - 덕성여대 강연
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
 
[2012 CodeEngn Conference 07] M-Stoned - iThreat
[2012 CodeEngn Conference 07] M-Stoned - iThreat[2012 CodeEngn Conference 07] M-Stoned - iThreat
[2012 CodeEngn Conference 07] M-Stoned - iThreat
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 

Mehr von Sehan Lee

Mehr von Sehan Lee (14)

BSides Delhi CTF 2018 [st4t1c (Reversing 200pts)] WriteUp
BSides Delhi CTF 2018 [st4t1c (Reversing 200pts)] WriteUpBSides Delhi CTF 2018 [st4t1c (Reversing 200pts)] WriteUp
BSides Delhi CTF 2018 [st4t1c (Reversing 200pts)] WriteUp
 
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUpBSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
 
BSides Delhi CTF 2018 [krev (Reversing 200pts)] WriteUp
BSides Delhi CTF 2018 [krev (Reversing 200pts)] WriteUpBSides Delhi CTF 2018 [krev (Reversing 200pts)] WriteUp
BSides Delhi CTF 2018 [krev (Reversing 200pts)] WriteUp
 
BSides Delhi CTF 2018 [avap (Reversing 75pts)] WriteUp
BSides Delhi CTF 2018 [avap (Reversing 75pts)] WriteUpBSides Delhi CTF 2018 [avap (Reversing 75pts)] WriteUp
BSides Delhi CTF 2018 [avap (Reversing 75pts)] WriteUp
 
Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]
Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]
Plaid CTF 2017 Write-Up [zipper (MISC 50pts)]
 
Mr.Robot CTF Write-Up (Korean version)
Mr.Robot CTF Write-Up (Korean version)Mr.Robot CTF Write-Up (Korean version)
Mr.Robot CTF Write-Up (Korean version)
 
Basic My SQL Problems(sqlzoo.net - select from world) & Basic SQL Injection(z...
Basic My SQL Problems(sqlzoo.net - select from world) & Basic SQL Injection(z...Basic My SQL Problems(sqlzoo.net - select from world) & Basic SQL Injection(z...
Basic My SQL Problems(sqlzoo.net - select from world) & Basic SQL Injection(z...
 
GoogleCTF 2016 [Wallowing Wallabies - Part One] Write-Up (ver.korean)
GoogleCTF 2016 [Wallowing Wallabies - Part One] Write-Up (ver.korean)GoogleCTF 2016 [Wallowing Wallabies - Part One] Write-Up (ver.korean)
GoogleCTF 2016 [Wallowing Wallabies - Part One] Write-Up (ver.korean)
 
GoogleCTF 2016 [No Big Deal] Write-Up (ver.korean)
GoogleCTF 2016 [No Big Deal] Write-Up (ver.korean)GoogleCTF 2016 [No Big Deal] Write-Up (ver.korean)
GoogleCTF 2016 [No Big Deal] Write-Up (ver.korean)
 
GoogleCTF 2016 [In Recorded Conversation] Write-Up (ver.korean)
GoogleCTF 2016 [In Recorded Conversation] Write-Up (ver.korean)GoogleCTF 2016 [In Recorded Conversation] Write-Up (ver.korean)
GoogleCTF 2016 [In Recorded Conversation] Write-Up (ver.korean)
 
GoogleCTF 2016 [Ernst Echidna] Write-Up (ver.korean)
GoogleCTF 2016 [Ernst Echidna] Write-Up (ver.korean)GoogleCTF 2016 [Ernst Echidna] Write-Up (ver.korean)
GoogleCTF 2016 [Ernst Echidna] Write-Up (ver.korean)
 
Attacking Session Management
Attacking Session ManagementAttacking Session Management
Attacking Session Management
 
Web Application Technologies
Web Application TechnologiesWeb Application Technologies
Web Application Technologies
 
Packet Tracer를 이용한 OSPF 설정
Packet Tracer를 이용한 OSPF 설정Packet Tracer를 이용한 OSPF 설정
Packet Tracer를 이용한 OSPF 설정
 

레이스 컨디션 기초(Basic Race Condition)

  • 2. 0x01. What is Race Condition? 0x02. The Basic of Race Condition Attack 0x03. The Story of Race Condition 0x04. DEMO 0x05. How can we prevent Race Condition?
  • 3. 자원을 동시에 사용하려는 프로세스들이 자원 사용을 하기 위해 프로세스들이 경쟁을 하는 것. 프로세스들이 경쟁하는 것을 이용하여 관리자 권한을 얻는 공격 방법.
  • 4.
  • 5. 1. 취약 프로그램이 생성하는 임시 파일의 이름을 파악. 2. 생성될 임시 파일과 같은 이름의 파일을 생성. 3. 이에 대한 심볼릭 링크를 생성. 4. 원본 파일을 지운 채 취약 프로그램이 심볼릭 링크를 건 파일과 같은 파일을 생성할 때를 기다린다. 5. 생성되었을 때, 심볼릭 링크를 이용해 파일 내용을 변경. 6. 시스템은 변경된 파일을 자신이 생성한 임시 파일로 생각하고 프로세스를 진행시킬 것이고, 공격자는 관리자 권한으로 실행되는 프로그램에 끼어들어 무언가를 할 수 있는 여지를 만든다.
  • 6. 실습환경 : Red Hat Linux 9.0
  • 7. - 첫 번째 - 관리자는 일반 사용자들이 자유롭게 파일을 생성하고 내용을 입력할 수 있게 하도록 다음 소스 코드를 짜고, 실행 파일을 생성한 뒤, setuid 설정을 하여 일반 사용자도 이용할 수 있도록 합니다.
  • 8. 해커는 소스의 취약점을 분석하여 다음과 같은 행동을 합니다.
  • 9. - 두 번째 - 자신이 만든 프로그램의 취약점으로 인해 해커가 관리자 권한을 취득한 것을 알아챈 관리자는 이를 막기 위해 소스코드를 수정합니다.
  • 10. 즉, 사용자들이 관리자가 지정한 파일만 수정할 수 있도록 소스를 수정합니다. 하지만 해커는 심볼릭 링크를 이용하여 다시 관리자 권한을 취득합니다. 심볼릭 링크를 통해 리눅스의 계정 관리 파일인 /etc/passwd 에 접근이 가능한 것입니다. 심볼릭 링크 생성
  • 11. - 세 번째 – 관리자는 최후의 수단으로 자신이 지정한 파일을 지우고 새로 생성하도록 소스를 수정합니다. 이렇게 하면 기존에 생성되었던 심볼릭 링크 파일은 삭제가 되고 새로운 파일이 생성되어 해커가 이용할 수 없습니다.
  • 12. 결국 해커는 최후의 수단으로 Race Condition Attack 을 수행하려고 준비합니다. attack1.c attack2.c
  • 13. 먼저, 해커는 attack1 이라는 소스를 짜서 프로그램을 만든 뒤, 실행시킵니다.
  • 14. 다음으로, 해커는 attack2 라는 소스를 짜서 프로그램을 만든 뒤, 실행시킵니다.
  • 15. Process attack1 Process attack2 sample.txt 삭제 sample.txt 생성 심볼릭 링크 생성 (X) sample.txt 삭제 sample.txt 생성 심볼릭 링크 생성 (X) 심볼릭 링크 생성 sample.txt 생성 (명령어 수행) Sample.txt 삭제 (O) sample.txt 삭제 sample.txt 생성 심볼릭 링크 생성 (X) sample.txt 삭제 sample.txt 생성 심볼릭 링크 생성... ...
  • 16.
  • 17.
  • 18. • if(lstat(filename, &st) != 0) • lstat함수는 파일의 심볼릭 링크의 유뮤에 대한 정보를 반환해준다. • if(!s_ISREG(st.st_mode)) • 구조체 st에 대한 st_mode 값으로 파일의 종류에 대한 것을 확인한다. • S_ISBLK- 블록파일 테스트 • S_ISCHR- 문자파일 테스트 • S_ISDIR- 디렉토리 테스트 • S_ISFIFO- FIFO 테스트 • S_ISREG- 일반적인 파일 테스트 • S_ISLNK- 심볼릭 링크 테스트
  • 19. • if(st.st_uid != 0) • 생성된 파일의 소유자가 root가 아닌 경우를 검사한다. 공격자에 의 해 자신이 생성한 파일이 삭제되고, 접근하고자 하는 파일이 일반 계정 소유의 파일인지 확인한다. • if(fstat(fd, &st2) ! = 0) • 파일 포인터에 의해서 열려진 파일의 정보를 모아 st2구조체에 이 를 전달한다. • if(st.st_ino != st2.st_ino) || st.st_dev != st2.st_dev) • 최초 파일에 대한 정보를 저장하고 있는 st와 파일을 연 후의 st2에 저장된 I 노드 값과 장치(device)값이 변경되었는지 확인한다.