U E D R , A S I H C RSS

정모/2019.9.25

2019.09.25 ZeroPage 정모


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 지식
    • 쓴 만큼만 내면 된다!
  • 대학생의 특권! github이나 aws credit을 학생증 등 재학증명서를 제출하면 받을 수 있다.
    • 사업하는데 공짜로 사용하고 있어용!!
  • javascript가 강력해졌따!
    • js로 별걸 다 하는 세상
      • 게임 클라이언트도 만들고
      • node.js 로 backend를 만들고
      • web app도 만들고
      • Native app도 만들고
  • MVP 공장장이 되어보자!
    • 중고래 (주소가 공개가 안되어있네)
    • 사물함 호랑이( 사물함 호랑이 - 사물함 선착순 신청하는 서비스)
    • 2학기를 운영하면서 약 300개 이상의 commit이 추가되었음.
    • 자동화된 서버 확장, 백오피스 기능, 광고 관리자 기능 등을 추가로 개발했음.
  • Production을 겪으며 느낀 점
    • git은 중요하다
      • 소스코드에 대한 버젼 관리
      • 결과물에 대한 버전 관리
      • 장애(버그, 예외)는 무조건 발생한다
      • Product는 항상 바뀐다.
      • GitOps - git에 올려서 배포나 운영을 한번에 하자!
    • Exception Handling의 중요성
      • 17세에 펜타곤과 백악관을 해킹한 천재 해커 (Malicious한 사용자)
      • 30년간 감옥에 있다가 나와서 아무것도 모르는 사람
      • 사용자는 의외로 멍청하다.
    • Software을 잘 만든다고 꼭 성공하진 않지만, 못만들면 무조건 망한다.
    • 웹 개발하기 좋은 시대
      • Infra에 대한 신경을 덜 써도 된다.
      • 준비물 : 프로그래밍 언어 아무거나 하나
      • 좋은 튜토리얼, 프레임워크가 많다!
      • 웹 개발 한번 해 보시는게 어떨까요?
    • 사물함 호랑이 소개해주세요!!

스터디

스터디 이름 설명 참가자 시간
Shaprest++ C++ 신형철, 한재현, 정우현, 김민하, 송정우, 이은서 화 20시
DAILYEE English 이은서,우준혁, 정우현 온라인
재자구함 C, 자료구조 한재현, 송정우, 이은서, 좌민주, 김민하, 박인서, 박예솔, 정은, 이승찬, 예원 수 20시
앙기모와 머머리 머신러닝을 활용한 알고리즘 트레이딩과 모의투자 양운천, 주영석, 이윤동, 박예솔 비정기
초코파이썬/시즌2 파이썬 기초 & 웹 크롤링 박인서, 이길상, 이호민, 신연진, 김희민, 박예솔 월 20시
AOC 컴퓨터구조 김민하, 이은서, 오준석, 이승찬 금 19시

프로젝트

프로젝트 설명 참가자
caucsenotice 중앙대 컴공 알리미 메일링 서비스 김정민, 강영빈, 양운천, 송정우
직선조아 linear regression 신동준
Robot_Study/Open Manipulatr 로봇팔 제작, 컨트롤러 구현, motion planning (reinforce learning) 우준혁
분수도 모르는 게 까불어 스마트 IoT 노래하는 LED 분수대 만들기 양운천, 모집 중

회계

  • 올려뒀습니다.

단체티

  • 후드를 맡아서 정하고 있다.
  • 이은서 학우가 맡아서 해주시고 있다.(짝짝짝)
  • 디자인 건의 해주시면 좋아요

공모전 및 경진대회

대회명 일자 참가자 결과

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-16 14:07:59
Processing time 0.0303 sec