OMS ¶
- Windows StackOverflow 허점을 이용한 공격과 스타트업 약팔이
- 연사 : 배상윤
- 메모리에 어떻게 프로그램이 올라가는가?
- Stack Overflow가 일어나면 나타나는 현상들
- Stack Segment 등등 용어설명을 하고 지역변수가 어떻게 스택에 저장되는지 도식을 보면 알 수 있다.
- Stack은 번지수가 아래로 자라는데, 한번 선언을 하면 return Instruction Pointer(IP)를 저장하고, 어디로 명령을 되돌려야 하는지 저장하고 그 위에 변수 등을 선언한다.
- 배열을 선언한다면, 위에 선언할걸 다 선언 한 다음에 쭉 위로 올린다.
- 여기서 만약? 선언한 배열보다 더 큰 크기의 자료를 삽입하면? 그 위에 있던 것들의 값을 덮어 쓸 수 있다.
- 그럼, 이걸 이용해 injection을 할 machine code의 base pointer과 code의 주소를 삽입하게 되면 공격을 할 수 있다.
- 이걸 막을 떄? Stack Canary를 사용한다
- Buffer Security에 이용하는데, return address에 도달하려면 canary value를 반드시 지나야한다! 변수 buffer 아래에 canary value를 사용하는데 stack에서 return value까지 가려면 반드시 canary를 지나야하기 떄문에 막을 수 있다!
- Canary Value가 위조되면, Exception을 raise하게 된다. Exception을 raise하게 되면 이걸 Handling을 하게 되는데. 문제는 이걸 Handling을 하는 부분도 Stack에 있다!
- 그래서 SEH Handler의 주소를 찾아서 스택오버플로우로 변조를 시켜버리면 무력화가 가능하다.
- SafeSEH라는 옵션이 있다면? 아.. ㅠㅠ 막힘
- 하지만 SafeSEH를 우회할 수 있다!
- Exception SEH Chain에 진입하는데 만약, handler에 POP, POP, RET라는 Assembly Code가 저장되어 있다면?
- OS Stack에서 Establisher Frame의 주소를 불러온다! 스택오버플로우를 이용해 Pointer to Next ERR에 있는 부분을(이부분이 SEH) SEH가 없는 코드로 덮어씌워버리면 우회할 수 있다!
- 하지만, Pointer to Next Handler Pointer.. 우리는 jump연산을 하기 위해 5byte가 필요한데 저 칸은 4byte밖에 안된다.
- short 변수 사용한다!!
- 근데, 방법은 알겠는데 POP/POP/RET이 있는 메모리의 주소는 어떻게 알 수 있을까요?
- 프로그램 내부 기계어 코드를 모두 읽어 찾아주는 곳이 있다.
- 프로그램 내부 기계어 코드를 모두 읽어 찾아주는 곳이 있다.
- 이런 걸 ROR이라고 한다.
- 따라해봤습니다.
- FTP Server에 Response Buffer에 Overflow공격.
- FTP서버를 열어서 SafeSEH를 우회하는 buffer을 overflow를 시켜서 공격..
- JMP short, Address of POP-POP-RET -> SEH
- 길다란 코드가 들어있으면 실행을 하지 않는 기능 때문에 Hunter, Egg로 코드를 나눠서 (점프 2번) 실행시켜서 우회 할 수 있다.
- SEH가 어디에 있는지(Insert할 Dummy를 얼마나 길게 만들어야 할 지는 어떻게 아나여?)
- FTP Server에 Connection할 때 Payload는 계산기를 실행시키는 shell code를 넣었다.
스타트업 약팔이 ¶
- 요새는 개발하기 좋은 시대이다. React Navtive, Vue.js 야 너두 쉽게 웹앱할 수 있어!
- Cloud와 Devops - 전공에 관계 없이 배포/운영할 수 있다!
- 약간의 Linux지식, Network 지식
- 쓴 만큼만 내면 된다!
- 약간의 Linux지식, Network 지식
- 대학생의 특권! github이나 aws credit을 학생증 등 재학증명서를 제출하면 받을 수 있다.
- 사업하는데 공짜로 사용하고 있어용!!
- 사업하는데 공짜로 사용하고 있어용!!
- javascript가 강력해졌따!
- js로 별걸 다 하는 세상
- 게임 클라이언트도 만들고
- node.js 로 backend를 만들고
- web app도 만들고
- Native app도 만들고
- 게임 클라이언트도 만들고
- js로 별걸 다 하는 세상
- MVP 공장장이 되어보자!
- 중고래 (주소가 공개가 안되어있네)
- 사물함 호랑이( 사물함 호랑이 - 사물함 선착순 신청하는 서비스)
- 2학기를 운영하면서 약 300개 이상의 commit이 추가되었음.
- 자동화된 서버 확장, 백오피스 기능, 광고 관리자 기능 등을 추가로 개발했음.
- 중고래 (주소가 공개가 안되어있네)
- Production을 겪으며 느낀 점
- git은 중요하다
- 소스코드에 대한 버젼 관리
- 결과물에 대한 버전 관리
- 장애(버그, 예외)는 무조건 발생한다
- Product는 항상 바뀐다.
- GitOps - git에 올려서 배포나 운영을 한번에 하자!
- 소스코드에 대한 버젼 관리
- Exception Handling의 중요성
- 17세에 펜타곤과 백악관을 해킹한 천재 해커 (Malicious한 사용자)
- 30년간 감옥에 있다가 나와서 아무것도 모르는 사람
- 사용자는 의외로 멍청하다.
- 17세에 펜타곤과 백악관을 해킹한 천재 해커 (Malicious한 사용자)
- Software을 잘 만든다고 꼭 성공하진 않지만, 못만들면 무조건 망한다.
- 웹 개발하기 좋은 시대
- Infra에 대한 신경을 덜 써도 된다.
- 준비물 : 프로그래밍 언어 아무거나 하나
- 좋은 튜토리얼, 프레임워크가 많다!
- 웹 개발 한번 해 보시는게 어떨까요?
- Infra에 대한 신경을 덜 써도 된다.
- 사물함 호랑이 소개해주세요!!
- git은 중요하다
스터디 ¶
스터디 이름 | 설명 | 참가자 | 시간 |
Shaprest++ | C++ | 신형철, 한재현, 정우현, 김민하, 송정우, 이은서 | 화 20시 |
DAILYEE | English | 이은서,우준혁, 정우현 | 온라인 |
재자구함 | C, 자료구조 | 한재현, 송정우, 이은서, 좌민주, 김민하, 박인서, 박예솔, 이정은, 이승찬, 오예원 | 수 20시 |
앙기모와 머머리 | 머신러닝을 활용한 알고리즘 트레이딩과 모의투자 | 양운천, 주영석, 이윤동, 박예솔 | 비정기 |
초코파이썬/시즌2 | 파이썬 기초 & 웹 크롤링 | 박인서, 이길상, 이호민, 신연진, 김희민, 박예솔 | 월 20시 |
AOC | 컴퓨터구조 | 김민하, 이은서, 오준석, 이승찬 | 금 19시 |
프로젝트 ¶
프로젝트 | 설명 | 참가자 |
caucsenotice | 중앙대 컴공 알리미 메일링 서비스 | 김정민, 강영빈, 양운천, 송정우 |
직선조아 | linear regression | 신동준 |
Robot_Study/Open Manipulatr | | 우준혁 |
분수도 모르는 게 까불어 | 스마트 IoT 노래하는 LED 분수대 만들기 | 양운천, 모집 중 |
회계 ¶
- 올려뒀습니다.
공모전 및 경진대회 ¶
대회명 | 일자 | 참가자 | 결과 |