== ''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 분수대 만들기 || [양운천], '''모집 중''' || === 회계 === * 올려뒀습니다. === 단체티 === * 후드를 맡아서 정하고 있다. * [이은서] 학우가 맡아서 해주시고 있다.(짝짝짝) * 디자인 건의 해주시면 좋아요 === 공모전 및 경진대회 === || 대회명 || 일자 || 참가자 || 결과 ||