Little boy questioned his mother, he asked what he can be in the future..with a sad smile, she tells him he can be anything he wants to be.... Boy said he’d become (an) astronaut and fly out into space crews around the universe he wanted to see the stars and also see other planets in outer space------------- "Why don’t we just keep dreaming, let’s keep our mind with dream and faith, as long as we wish we can make it come true, how old you are never forget your dream and keep dreaming "

Thursday 27 December 2018

Python : Lambda

Lambda, dikenal juga sebagai anonymous functions/fungsi anonim atau one line function, disebut demikian karena lambda berupa kode satu baris yang tidak memiliki nama, lambda hanya memiliki kode untuk dieksekusi. Biasanya, fungsi lambda diimplementasikan untuk melakukan sesuatu yang sangat sederhana, seperti mengalikan angka atau mengekstraksi bagian dari string.
Jika kita menggunakan statemen yang sama secara berulang-ulang dalam kode python, Kita bisa mempertimbangkan untuk menggunakan fungsi lambda ini.

Sintaks dasarnya seperti ini :
lambda argumen : ekspresi

Kita tidak dapat menempatkan statemen apapun dalam ekspresi lambda. Ini berarti kita tidak bisa menambahkan statemen if dalam ekspresi lambda, ataupun deklarasi variabel. 
Kita bisa menghindari pembuatan fungsi python untuk hal yang benar benar sangat sederhana sehingga menghindari kita menulis def namafungsi (parameter) : return (expression).
contoh : 
Function
def kali(x,y) :
    return x*y
Lambda
kali = lambda x,y : x * y

Diatas adalah perbandingan antara function biasa dengan lambda, keduanya memiliki tujuan yang sama yaitu mengalikan 2 buah bilangan akan tetapi implementasinya menjadi lebih sederhana jika memakai fungsi lambda. 
kode kali pada lambda di atas bukanlah sebuah variabel, tapi sebuah label, cara menggunakannya seperti ini :
>>> kali(9,8)
72

>>>kali(10,10)
100

Contoh lain :
Membalik string
>>>reverse = lambda s:s[::-1]
>>>reverse('python')
'nohtyp'
Mengekstrak huruf pertama
>>>huruf_awal = lambda s : s[0]
>>>huruf_awal('python')
'p'
Lambda didalam function
>>>def myfunc(n):
    return lambda a : a * n
>>>doubler = myfunc(3)
>>>doubler(11)
33

Python : Akses database PostgreSQL dengan psycopg

Psycopg adalah adaptor database PostgreSQL paling populer untuk bahasa pemrograman Python. Psycopg sepenuhnya memenuhi standar DB API 2.0. Versi saat ini adalah 2.0 dan masih terus aktif dikembangkan yang menjanjikan performa cepat dan stabil. Psycopg dirancang untuk aplikasi multi-threaded yang mendukung pembuatan dan penghapusan banyak kursor serta pembuatan fungsi INSERT atau UPDATE secara bersamaan.

Ketika kita ingin menjalankan SQL query SELECT, UPDATE, DELETE atau INSERT kedalam database postgreSQL kita membutuhkan psycopg sebagai penghubung antara bahasa pemrograman Python dengan Database PostgresSQL.

Homepage : http://initd.org/
Github : https://github.com/psycopg/psycopg2

Cara instalasi psycopg pada python :
pip install psycopg2

Sintaks koneksi seperti ini :
import psycopg2

try:
    conn = psycopg2.connect('''user=username 
                               password=password
                               dbname=namadatabase
                               host=127.0.0.1 
                               port=5432''')
print ("Berhasil terkoneksi")
except:
    print ("Tidak dapat terkoneksi dengan database")

Sintaks diatas akan mengimpor adaptor dan mencoba untuk terhubung ke database. Jika koneksi gagal, maka akan menampilkan eksepsi "Tidak dapat terkoneksi dengan database".

Kemudian kita perlu mendefinisikan cursor :
cur = conn.cursor()

Seletah cursor terdefinisi, kita sudah bisa melakukan eksekusi query dengan cara :
cur.execute('sql query')

cur.execute("""SELECT * from users""")
Kemudian kita perlu menyimpan result-set hasil eksekusi query kedalam variabel, contoh variabel record
record = cur.fetchall()

**kelebihan dari psycopg adalah result set hasil query secara otomatis dikonversi kedalam varible tipe list
untuk menampikan hasil query :
for row in record :
    print(row)
karena record adalah variabel dengan tipe data list maka kita bisa menampilkan data berdasarkan index posisi kolom seperti ini :
for row in record :
    print("{}  {} ".format(row[0],row[1]))

Wednesday 26 December 2018

Python : SQL Query menjadi Excel dengan Pandas

Bahasa Queri (Bahasa Inggris: query language) adalah suatu bahasa komputer yang digunakan untuk melakukan permintaan terhadap basis data dan sistem informasi.



Wikipedia
Seorang database administrator pasti sehari hari berhubungan dengan yang namanya transaksi query database, yang paling banyak kita gunakan adalah SQL Query.
Ketika memerlukan data dari database, kita menggunakan statement SQL SELECT untuk mengambil data dari tabel database dan mengembalikan data ini dalam bentuk tabel hasil. Tabel hasil ini disebut result-set.

Dibawah ini adalah contoh untuk menuliskan, memindahkan hasil query (result-set) kedalam file excel menggunakan python dengan bantuan module 'pandas'. Kode ini merupakan contoh koneksi python dengan database PostgresSQL, akan tetapi fuction untuk menuliskan hasil query ke excel ini dapat digunakan pada database lainnnya seperti SQL server, mySQL, dll.

Pertama, install modul pandas kedalam python, buka command prompt ketikan perintah :
pip install pandas


sql_list_query = "SELECT * from User"

def export_excel (sql_query, namafile,namasheet):
    cursor.execute(sql_query)
    record = cursor.fetchall()
    columns = [desc[0] for desc in cursor.description]
    df = pd.DataFrame(list(record), columns=columns)
    writer = pd.ExcelWriter(namafile)
    df.to_excel(writer, sheet_name=namasheet,index=False)
    writer.save()

import_excel(sql_list_query,'contoh.xlsx','hasil_query')

Penjelasan skrip diatas :
  • sql_list_query adalah variable tipe string yang berisi sintaks query SQL
  • def export_excel (sql_query, namafile,namasheet) adalah fungsi dengan nama export_excel yang berisi tiga parameter inputan yaitu : sql_query (nama variable yang menampung sintaks query SQL), namafile> (nama file excel) dan namasheet (nama sheet excel).
  • cursor.execute(sql_query) dan record = cursor.fetchall() method eksekusi query dan menyimpan hasilnya pada variabel record
  • columns = [desc[0] for desc in cursor.description], men set nama kolom excel dari deskripsi query Sql.
  • df = pd.DataFrame(list(record), columns=columns), membuat dataframe yang datanya diambil dari result-set dengan nama header kolom = variable colomns.
  • writer = pd.ExcelWriter(namafile), inisialisasi fungsi writer
  • df.to_excel(writer, sheet_name=namasheet,index=False),  menulis dataframe kedalam format excel tanpa meyertakan index dataframe.
  • writer.save(), menyimpan file excel,
  • import_excel(sql_list_query,'nama_file_excel.xlsx','nama_sheet') adalah contoh pemanggilan fuction export_excel yang akan menghasilkan file excel dengan nama file = 'contoh.xlsx', nama sheet = 'hasil_query' dari eksekusi query SQL variable sql_list_query.

Sunday 23 December 2018

Python : *args dan **kwargs

Ketika anda memperlajari kode pada bahasa pemrograman python pasti menemukan variable *args atau **kwargs ini menjadi parameter dari suatu fuction (fungsi) dalam suatu program. dan terheran sebenarnya variable apa ini?!
*args dan **kwargs
Kedua parameter ajaib ini adalah sebuah fungsonal parameter, *args adalah arguments dan **kwargs adalah keyword arguments. dengan kedua parameter tsb kita dapat membuat function yang kita buat dapat menerima sejumlah parameter argumen dan parameter keyword secara arbitrary (sewenang wenang) tanpa menentukan predefined parameter sebelumnya.

Perlu diketahui pada *args dan **kwargs yang paling penting adalah tanda *(asterik) dan ** (asterik ganda). anda bisa saja mengganti nama variablenya, semisal menjadi *var atau **vars.

Contoh :

Function pada python
def komisi (a,b):
    return sum((a,b))*0.05

komisi(40,60)
In [5]: komisi(40,60)
Out[5]: 5.0
function untuk mengembalikan nilai sejumlah 5% dari penjumlahan dua buah nilai. terdapat dua buah parameter a dan b, didalam function tsb terdapat operasi menjulahkan nilai dari dua paramter tsb kemudian dikalikan dengan 0.05, sehingga jika input nilai parameter a = 40 dan b = 60 maka nilai yang dikembalikan fuction adalah 5.0
So far ga ada masalah ya...hehe

Wednesday 19 December 2018

Python : Mengirim email dengan yagmail 'Yet Another GMAIL/SMPTP Client'



Module yang dapat digunakan untuk mengirim email pada python yang paling sering dipakai adalah kombinasi module smtplib dengan email. Selain itu ternyata ada module email lain yang dapat digunakan dengan sintaks yang lebih sederhana dan lebih mudah dipakai.

Module yagmail yang ditulis dan dikembangkan oleh Pascal van Kooten dibagikan di halaman githubnya : 

https://github.com/kootenpv/yagmailhttps://github.com/kootenpv/yagmail 

Dihalaman tsb dideskripsikan bahwa tujuan dari yagmail adalah 'The goal here is to make it as simple and painless as possible to send emails.' artinya dilarang makan sebelum berdoa

Seberapa sederhana kah sintaks nya? kira kira untuk mengirim email begini sintaks nya : 


import yagmail
yag = yagmail.SMTP()
contents = ['This is the body, and here is just text http://somedomain/image.png',
            'You can find an audio file attached.', '/local/path/song.mp3']
yag.send('to@someone.com', 'subject', contents)

Lebih sederhana lagi begini :
yagmail.SMTP('mygmailusername').send('to@someone.com', 'subject', 'This is the body')

Sunday 9 December 2018

Python : Kompilasi source code ke bytecode (.py ke .pyc)



Ketika kita menulis kode program dalam bahasa pemrograman python, script yang kita tulis dalam high level language yang artinya bahasa dan perintah yang dimengerti manusia akan disimpan menjadi source file python berekstensi .py, file tsb dapat dibaca dan diubah oleh python intepreter dengan mengubah setiap baris perintah perintah menjadi instruksi instruksi byte code yang dapat dipahami oleh komputer, file byte code tsb disimpan dalam file berekstensi .pyc dan akhirnya dieksekusi oleh python virtual machine.

Proses mengubah dari high level language ke byte code atau kode instruksi komputer tsb dinamakan dengan proses kompliasi (compile).

Mengubah file souces code ke byte code ini memiliki beberapa kelebihan :

  • File source code dan byte code bisa sama sama langsung dieksekusi oleh python intepreter, akan tetapi byte code akan lebih cepat dieksekusi.
  • Proses eksekusi byte code lebih cepat karena tidak ada kompilasi lagi untuk mengubah source code ke byte code.
  • Dari sisi keamanan jauh lebih aman dibandingkan souce code yang masih berupa kode yang bisa dibaca siapa saja. bayangkan ada orang lain yg memiliki akses ke source code anda yang berisi user name, password dan setingan lainnya.  
Cara mengkompilasi file source code (.py) ke file bytecode (.pyc) bisa dilakukan dengan bantuan module 'py_compile'.

Python : String Formatting


String Formatting atau Pemformatan string memungkinkan kita menyuntikkan item ke dalam string daripada kita mencoba menggabungkan string menggunakan koma atau string concatenation. 
Sebagai gambaran, perbandingannya seperti ini :
Nama = 'Budi'
Umur = 25

'Nama saya '+Nama+', umur saya sekarang '+str(Umur)+' Tahun.'  # concatenation

f'Nama saya {Nama}, umur saya sekarang {Umur} Tahun'          # string formatting

Ada tiga cara untuk melakukan pemformatan string.
  • Metode lama menggunakan placeholder menggunakan karakter '%' (modulo)
  • Teknik yang ditingkatkan menggunakan metode string .format ().
  • Metode terbaru, diperkenalkan dengan Python 3.6, menggunakan string literal yang diformat, disebut f-string.

Saturday 8 December 2018

Python : Input password pada Python dengan getpass()


Ketika program meminta user untuk memasukan password/katasandi tentunya kita tidak ingin password yang sedang kita ketik muncul dilayar.

getpass (), fungsi yang meminta pengguna untuk memasukan kata sandi tanpa menampilkannya. Module getpass menyediakan cara yang aman untuk menangani permintaan kata sandi di mana program berinteraksi dengan pengguna melalui terminal/command prompt.

Contoh penggunaan pada validasi login user
Sintaks nya :


import getpass
userid = 'gani'
passw = 'secret'

uid = input('masukan id anda : ')
pwd = getpass.getpass('masukan password anda : ')
if uid == userid and pwd == passw :
    print('Sukses Login..Selamat datang ', userid)
else :
    print('User ID atau password salah')

Jika dijalankan hasilnya seperti ini :

Done..


Python : Membuka Web Browser


Kita dapat menjalankan web browser untuk membuka website secara spesifik dengan bantun dari module 'webbrowser' mengunakan fungsi open()

sintaks nya kaya gini :

import webbrowser

webbrowser.open('https://www.google.com')

Ketika dijalankan, maka sistem akan segera menjalankan web browser (default web browser) dan membuka website yang kita tentukan sesuai parameter yang kita berikan pada fungsi webbrowser.open("alamat url")

Mudah bukan?
Bagaimana jika ingin membuka sekaligus beberapa website sekaligus? kita bisa gunakan menyimpan website apa saja yang akan dibuka pada tipe data dictionary python

Sintaks :

import webbrowser

web_start = {
        'fb' : "https://web.facebook.com/",
        'gmail' : "https://gmail.com",
        'blog' : 'https://www.blogger.com'
        }


for url in web_start:
    webbrowser.open_new(web_start[url])

Done...

Saturday 1 December 2018

Cisco Packet Tracer 7.2 Windows & Linux (32-Bit & 64-Bit) Download

Cisco Packet Tracer 7.2

The best way to learn about networking is to do it. Cisco Packet Tracer, an innovative network configuration simulation tool, helps you hone your networking configuration skills from your desktop or mobile device. Use Packet Tracer to:
  • Sharpen your skills for a job interview
  • Prepare for a certification exam
  • Practice what you learn in networking courses

Note :



(1) Packet Tracer memerlukan otentikasi untuk membuka fungsionalitas penuh - lihat Gambar 1 di bawah ini. Pengguna yang tidak mengotentikasi dengan login dan kata sandi NetAcad.com mereka tidak akan dapat menyimpan pekerjaan setelah 10 kali pemakaian guest mode - lihat Gambar 2 di bawah ini misalnya pesan yang diterima oleh pengguna tamu/guest mode.
Jadi kalian yang ingin memakai packet tracer versi terbaru ini (7.1.1) pertama tama harus buat akun netacad dan enroll di course "Introduction to Packet Tracer" nya netacad disini.



Image 1: Packet Tracer Authentication with NetAcad.com Login and Password

Image 2 -- Example Packet Tracer Guest User Message -- user is not logged in.

Download

Sunday 12 August 2018

Apa itu Directory Traversal?

Serangan dan ancaman directory traversal memanfaatkan validasi yang tidak benar dari input yang disediakan pengguna, yang memungkinkan aktor ancaman untuk mendapatkan akses yang tidak diinginkan ke sistem file. Jenis eksploit ini memanfaatkan praktik pemrograman yang buruk yang gagal untuk memeriksa input yang disediakan oleh pengguna yang memungkinkan pengguna untuk bergerak melalui struktur direktori di luar batas-batas tingkat direktori halaman web.

Prinsip utama serangan traversal direktori adalah melalui web server. Web server, ketika diinstal, diberikan sebuah direktori root pada server, seperti c: \ Inetpub \ wwwroot. Semua file pada halaman web umumnya terdapat dalam direktori ini dan subdirektorinya. Direktori dalam struktur file di luar direktori "root" ini tidak dimaksudkan untuk diakses.

Ketika seseorang melakukan traversal direktori mencoba mengakses struktur file lainnya dengan memasukkan URL yang dibuat, yang akan memungkinkan akses atau bahkan memungkinkan eksekusi program pada server host. Perhatikan gambar berikut:

URL dibagi menjadi dua bagian. Awalnya, https://drive.google.com, adalah situs sebenarnya yang sedang dikunjungi dan bagaimana akses ke server web diperoleh. Sesampai di sana, sisa fungsi URI seperti struktur direktori di komputer. Dari direktori root web-server, ia masuk ke dalam subdirektori untuk menemukan konten yang ingin ditampilkan di browser. Semuanya terlihat normal di sini.

Bayangkan bagaimana keuntungan dari traversal direktori yang memungkinkan untuk digunakan untuk menjelajahi sistem file lainnya. Tambahkan beberapa karakter yang mungkin anda familiar bagi yang sering menggunakan navigasi baris perintah : 
Perhatikan bahwa bagian pertama yang dikelilingi oleh kotak adalah URL (nomor port juga termasuk) yang menyediakan akses ke situs web. Kali ini, daripada membiarkan halaman mengikuti struktur direktori ke konten pilihan yang kita cari, pengguna bisa saja memasukkan beberapa .. \ secara berurutan ke URL. 

Menavigasi sistem file melalui baris perintah secara efektif memberitahu server web untuk naik satu tingkat direktori. Untuk setiap iterasi dari pola karakter, pengguna mendorong dirinya sendiri lebih jauh melalui sistem file. Mereka akan mencapai c: \ Inetpub \ wwwroot (lokasi halaman web pada server web berbasis Windows) dan dilewatkan ke c: \ Inetpub, dan kemudian c: \ (direktori tingkat atas umum pada web berbasis Windows server). Jika menambahkan lebih banyak karakter ...  daripada direktori yang tersedia untuk dilewati, bukan masalah karena setiap set ekstra akan menuntun pengguna di direktori teratas (karena tidak ada tempat yang lebih tinggi lagi). 

Dalam contoh diatas, bagian terakhir dari alamat adalah boot.ini. File konfigurasi ini berisi teks ASCII, sehingga browser web hanya menampilkan konten kepada pengguna seolah-olah menampilkan halaman web apa pun. Tinjau informasi berharga tentang server web.

Lebih jauh lagi, lihat contoh dibawah ini :
Perhatikan URI : %255c, kode tsb akan di decode ke back-slash. Ini adalah bentuk obfuscation.

Kali ini, pengguna telah melihat-lihat lokasi yang executable (dalam hal ini, command prompt Windows) dan meneruskannya dengan memasukan beberapa argumen. Eksekusi dan output selanjutnya ditampilkan melalui browser. di contoh ini penyerang hanya menjalankan perintah dir, tetapi banyak hal lain yang bisa dia lakukan dengan menjalankan cmd.exe pada target? Apa yang bisa dieksekusi lainnya?

Traversal direktori juga dapat digunakan dengan skrip. Lihat contoh ini di server web berbasis Linux:
Kode ini akan disuntikkan ke skrip situs web dan kemudian diurai. Cookie akan diproses dan browser akan diarahkan ke file /etc/passwd.
Outputnya adalah isi dari /etc/passwd. Beberapa informasi yang sangat berharga dapat dikumpulkan di sini bukan?!.

Traversal direktori dapat menjadi teknik yang sangat berharga terhadap server web yang tidak melakukan tindakan pencegahan yang tepat untuk memvalidasi masukan. Semuanya dapat diakses, mulai dari target sidik jari hingga menemukan akun dan kata sandi, bahkan melakukan eksekusi kode. Aplikasi web-server modern sudah termasuk pengecekan input dan patch untuk mengatasi celah keamanan ini. Oleh karena itu, kerentanan ini jarang terlihat kecuali untuk sistem warisan, yang jarang dimaintenance dan diperbarui.

Jika anda ingin mengeksplore lebih jauh tentang traversal direktori, cobalah gunakan environment yang disediakan pada OWASP Mutillidae.

apa itu Obfuscated JavaScript?

Threat actor / aktor ancaman adalah entitas jahat yang dapat bertanggung jawab pada dampak negatif terhadap postur keamanan keseluruhan dari suatu jaringan. Mereka akan menggunakan berbagai vektor serangan untuk mendapatkan akses tidak sah ke sumber daya jaringan. 

Vektor serangan memungkinkan aktor ancaman untuk mengeksploitasi kerentanan sistem yang diketahui atau tidak dikenal. Jenis-jenis vektor serangan yang digunakan dapat bergantung pada tingkat keterampilan, motivasi dari aktor ancaman, dan target yang mereka pilih. Untuk secara efektif mengenali vektor-vektor serangan ini, seorang analis harus terbiasa dengan dasar-dasar serangan dan bagaimana mereka dilakukan.

Vektor untuk serangan termasuk yang berikut:
  • Web: Serangan umum mencakup :
    • SQL Injection
    • Inklusi file lokal atau traversal direktori
    • Arbitrary code execution
    • Obfuscated web scripting
    • XSS
    • Cross-site forged requests
  • Kerentanan perangkat lunak : Kerentanan perangkat lunak, terutama varian yang dapat memproses kapabilitas jaringan, juga merupakan vektor serangan potensial. Eksploitasi yang ditulis terhadap kerentanan perangkat lunak tersebut mungkin termasuk shellcode.
  • Payload umum : Dalam muatan umum, seorang analis mungkin menemukan bind-shell dan reverse-shell yang akan memungkinkan penyerang untuk mendapatkan akses remote command-line ke target.
  • Pengguna akhir / end user: Pengguna akhir adalah vektor serangan potensial lainnya yang akan dieksploitasi oleh aktor ancaman termotivasi. File dan dokumen yang berisi kode berbahaya yang disematkan dan / atau disamarkan dapat muncul sebagai dokumen terlampir dalam pesan email atau dapat secara tidak sengaja diunduh ke sistem oleh pengguna yang mengklik tautan URL yang ditampilkan dalam pesan. USB thumb drive yang terinfeksi dapat diinstal dengan file berbahaya yang dapat secara otomatis dijalankan setelah dimasukkan ke dalam sistem. Pada tahun 2008, USB flash drive menginfeksi komputer di Stasiun Luar Angkasa Internasional dengan perangkat lunak berbahaya.

Obfuscated JavaScript 

Dalam pengembangan perangkat lunak, obfuscation code (kode yang dikaburkan/ disamarkan) adalah teknik yang digunakan untuk menyamarkan munculnya kode sumber yang berjalan pada suatu sistem. Mengaburkan kode sumber memiliki banyak tujuan dan umumnya digunakan untuk mengurangi ukuran keseluruhan dari kode atau aplikasi perangkat lunak. 

Obfuscated JavaScript merender kode sumber JavaScript ke dalam bentuk yang tidak mudah dibaca, dengan maksud menyamarkan fungsi kode yang dimaksud. Kode JavaScript dijalankan saat runtime oleh browser sistem klien dan tertanam dalam halaman HTML.

JavaScript memungkinkan pengguna untuk berinteraksi dengan formulir atau halaman yang ditampilkan di situs web. Encoding JavaScript adalah metode populer untuk mengaburkan kode sumber JavaScript ke dalam pernyataan yang sulit untuk dibaca atau ditafsirkan. Pengembang web biasanya akan menggunakan kode JavaScript yang dikaburkan sebagai upaya untuk mencegah kode sumber JavaScript mereka dianalisa atau dicuri. Kode JavaScript dapat dengan mudah dilihat selama sesi web dan tujuan mengaburkan kode sumber adalah untuk melindungi kekayaan intelektual pengembang.

Obfuscated JavaScript juga dapat digunakan sebagai sarana untuk menyamarkan kode sumber yang dibuat dengan maksud meruksak sistem. Penyerang sering mengaburkan kode JavaScript mereka untuk menghindari deteksi dan mengeksekusi kode berbahaya di workstation. Aktor ancaman ingin menyamarkan kode jahat sehingga mungkin dengan bebas dieksekusi untuk mencapai tujuan.

Analis harus memahami bahwa tindakan mengaburkan kode sumber JavaScript seharusnya tidak dianggap berbahaya secara otomatis. Namun, analis harus dapat mengenali kompleksitas dan tantangan yang terkait dengan mengidentifikasi vektor serangan yang berlaku ini. Jenis-jenis serangan ini semakin populer dan sulit dideteksi.

Contoh teknik umum yang digunakan untuk mengaburkan kode JavaScript seperti berikut:
  • Secara otomatis mengganti nama variabel menjadi nama acak dan menjadikan kode menjadi lebih sulit dibaca dan sulit dipahami.
  • JavaScript akan mengabaikan ruang putih di dalam kodenya. Pengacakan ruang-putih adalah proses penempatan karakter spasi-putih dan jeda baris di seluruh kode tanpa mengubah fungsinya.
  • Kode sumber yang memodifikasi diri sendiri yang menulis ulang dirinya sendiri saat dieksekusi.
  • Menggunakan kode karakter dan manipulasi string yang dikombinasikan dengan penyalahgunaan ekspresi eval ‘eval ()’.

Mendeskripsikan Insiden Keamanan dalam VERIS


Untuk memerangi ancaman keamanan dunia maya yang luas dan bervariasi saat ini, organisasi menyadari pentingnya berbagi informasi keamanan untuk tetap mengikuti perkembangan terkini dari ancaman ancaman yang bisa terjadi sekarang. Masalahnya adalah sulit untuk membagi temuan informasi keamanan dengan mudah, aman, dan  menghasilkan transfer informasi yang dapat dimengerti. Berbagi informasi adalah pekerjaan yang rumit dan menantang. Jika dilakukan dengan benar, semua orang yang terlibat mendapat manfaat dari kecerdasan kolektif ini. Jika dilakukan dengan buruk, itu malah dapat menyesatkan partisipannya atau menciptakan kesempatan belajar untuk para musuh. VERIS (Vocabulary for Event Recording and Incident Sharing) , awalnya dikembangkan oleh Verizon, adalah satu set metrik yang menyediakan bahasa umum untuk menggambarkan insiden keamanan secara terstruktur dan berulang.

VERIS adalah format terbuka yang dapat digunakan siapa pun di suatu organisasi tanpa biaya lisensi apa pun (gratis). VERIS membantu organisasi untuk mengumpulkan informasi terkait insiden dan berbagi informasi secara anonim dan bertanggung jawab. Dengan menggunakan metrik VERIS standar, organisasi dapat membandingkan diri mereka dengan organisasi lain, yang membuka sumber baru informasi yang berguna bagi organisasi, termasuk perbandingan antara metrik oranisasi terhadap rata-rata di seluruh dunia, perbandingan sebelum dan sesudah ketika kontrol keamanan baru diterapkan dalam organisasi, dan tren ancaman untuk melihat apakah ada peningkatan.

VCDB adalah repositori terbuka dan bebas dari insiden keamanan yang dilaporkan secara publik yang dicatat dalam format VERIS. Peluncuran awal VCDB berisi data dari lebih dari 1.200 insiden, terutama dari tahun 2012 dan 2013.

Gambar tersebut menunjukkan empat komponen utama VERIS (aktor, tindakan, aset, dan atribut, yang dikenal sebagai "4 A's") yang digunakan untuk menggambarkan sebuah insiden.

Struktur Insiden

Insiden yang didokumentasikan dengan menggunakan skema dan struktur VERIS dapat berisi lima bagian utama berikut yang dirancang untuk menangkap aspek yang berbeda dari narasi insiden menggunakan variabel yang berbeda. Jika dilihat bersama, bagian ini harus memberi organisasi gagasan yang lebih baik tentang penyebab dan keparahan insiden.
Incident Tracking
incident_id
ExampleBreach_00001
Victim Demographics
victim.victim_id
Example Inc.
Incident Description
actor.external.country
ISO 3166-2:RU
Discovery and Response
corrective_action
Create a new IPS rule to ...
Impact Assessment
impact.overall_rating
Damaging
  • Bagian pelacakan insiden (incident tracking) menangkap informasi umum tentang insiden tersebut. Tujuan utamanya adalah memungkinkan organisasi untuk mengidentifikasi, menyimpan, dan mengambil insiden dari waktu ke waktu. Misalnya, variabel incident_id digunakan untuk mengidentifikasi insiden secara unik untuk penyimpanan dan pelacakan dari waktu ke waktu.
  • Bagian demografi korban (Victim Demographics) menjelaskan (tetapi tidak mengidentifikasi) organisasi yang dipengaruhi oleh insiden tersebut. Tujuan utamanya adalah untuk membantu perbandingan antara berbagai jenis organisasi (di seluruh industri, ukuran, wilayah, dan sebagainya) atau departemen dalam satu organisasi. Ketika menggunakan VERIS hanya secara internal dalam suatu organisasi, organisasi mungkin tidak peduli dengan demografi korban, karena organisasi akan menjadi satu-satunya korban. Namun, untuk membagikan data ini dengan organisasi lain, akan sangat membantu untuk mengetahui tentang organisasi korban. VERIS memudahkan untuk membagikan informasi yang relevan tanpa mengungkapkan nama organisasi. Misalnya, variabel victim.victim_id digunakan untuk menghubungkan insiden dengan entitas yang dipengaruhi oleh mereka (tanpa mengidentifikasi entitas itu sendiri), yang dapat berguna dalam skenario berbagi kejadian anonim untuk banyak tujuan. Misalnya, perlu untuk mempelajari hal-hal seperti rata-rata jumlah insiden per organisasi, mengapa organisasi tertentu mengalami lebih banyak insiden, apakah tindakan korektif tertentu mengarah pada insiden atau kerugian yang berkurang, dan seterusnya.
  • Bagian deskripsi insiden (incident description) menerjemahkan narasi insiden "siapa melakukan apa dengan apa (atau siapa) dengan hasil apa" menjadi bentuk yang lebih cocok untuk tren dan analisis. VERIS menggunakan model ancaman A4 yang dikembangkan oleh tim Verizon RISK. Dalam model A4, insiden dipandang sebagai serangkaian peristiwa yang berdampak buruk pada aset informasi dari suatu organisasi. Setiap peristiwa terdiri dari "4 A's" (aktor, tindakan, aset, dan atribut), yang menyediakan struktur tingkat teratas untuk metrik di bagian ini. Sebagai contoh, variabel actor.external.country digunakan untuk mengidentifikasi asal geografis aktor, yang berguna pada berbagai level investigasi, operasional, dan strategis. VERIS menggunakan kode ISO 3166 untuk variabel negara.
  • Bagian penemuan dan tanggapan (discvery and response) berfokus pada garis waktu kejadian, bagaimana insiden itu ditemukan, dan pelajaran yang didapat selama proses tanggap dan remediasi. Ini memberikan wawasan yang berguna ke dalam deteksi dan kemampuan defensif organisasi dan membantu mengidentifikasi tindakan korektif yang diperlukan untuk medeteksi dan mencegah insiden serupa di masa depan. Misalnya, variabel korektif_action digunakan untuk mengidentifikasi apa yang harus (atau apa yang seharusnya) dilakukan untuk mencegah kejadian seperti itu dari berulang.
  • Bagian penilaian dampak (impact assesement) memanfaatkan tiga perspektif dampak untuk memberikan pemahaman dan ukuran konsekuensi yang terkait dengan insiden tersebut. Bersama-sama, mereka berusaha untuk mengkategorikan berbagai kerugian yang dialami, memperkirakan besarnya, dan menangkap penilaian kualitatif dari keseluruhan efek pada organisasi. Misalnya, variabel impact.overall_rating digunakan untuk menilai keseluruhan dampak insiden ini terhadap organisasi.
Daftar lengkap variable VERIS dapat dilihat dihalaman : http://veriscommunity.net/schema-docs.html dan kemudian skema terbaru VERIS dapat dilihat di Github : https://github.com/vz-risk/veris.

Computer Security Incident Response Team (CSIRT)

Kesuksesan keamanan bukan hanya tentang menjaga ancaman dari jaringan Anda. Ini juga tentang cepat merespon dan menggagalkan serangan ketika itu terjadi.

CSIRT adalah organisasi layanan yang bertanggung jawab untuk menerima, meninjau, dan menanggapi laporan dan aktivitas insiden keamanan komputer. Layanan CSIRT biasanya dilakukan untuk konstituensi yang ditentukan yang bisa menjadi entitas induk seperti organisasi perusahaan, pemerintah, atau pendidikan; suatu wilayah atau negara; jaringan penelitian; atau klien berbayar.
CSIRT dapat menjadi tim yang diformalkan atau tim ad hoc. Tim yang diformalkan melakukan pekerjaan respons insiden sebagai fungsi pekerjaan utamanya. Tim ad hoc dipanggil bersama selama insiden keamanan komputer yang sedang berlangsung atau untuk menanggapi insiden ketika diperlukan.

Setiap CSIRT berbeda. Setiap organisasi, berdasarkan persyaratannya, harus memutuskan struktur dan operasi CSIRT.
CSIRT harus memiliki pemahaman mendalam tentang jaringan dan asetnya. Seringkali, penyerang melakukan pengintaian menyeluruh dan tahu lebih banyak tentang jaringan target mereka daripada tim keamanan korban.

Misi utama CSIRT adalah untuk membantu memastikan perusahaan, sistem, dan pelestarian data dengan melakukan penyelidikan komprehensif terhadap insiden keamanan komputer, dan berkontribusi pada pencegahan insiden tersebut dengan terlibat dalam penilaian dan deteksi ancaman, perencanaan mitigasi, analisis kecenderungan insiden, dan tinjauan arsitektur keamanan.

CSIRT dapat menjadi bagian dari SOC. Ketika analis SOC mengidentifikasi ancaman, kebijakan respons insiden diberlakukan, dan langkah-langkah yang tepat harus dilakukan agar berhasil melindungi aset. Analis SOC harus memastikan bahwa mereka benar-benar mengidentifikasi ancaman sebelum mengambil tindakan apa pun. Persyaratan ini berarti sepenuhnya mendiagnosis kejadian sebelum mencoba untuk menahan insiden tersebut.

Kategori CSIRT

SIRT (Security Incident Response Team) terdiri dari berbagai bentuk dan ukuran dan melayani beragam konstituen. Beberapa kategori umum CSIRT, tetapi tidak terbatas pada, yang berikut:
  • Internal CSIRT memberikan layanan penanganan insiden kepada organisasi induknya, yang bisa menjadi CSIRT untuk bank, perusahaan manufaktur, universitas, atau agen federal.
  • National CSIRT memberikan layanan penanganan insiden ke suatu negara. Contohnya termasuk JPCERT / CC atau Tim Tanggap Darurat Komputer Singapura (SingCERT). Daftar CSIRT nasional dapat ditemukan di: http://www.cert.org/incident-management/national-csirts/national-csirts.cfm.
  • Coordination Center mengoordinasi dan memfasilitasi penanganan insiden di berbagai CSIRT. Contohnya termasuk Pusat Koordinasi CERT atau US-CERT.
  • Analysis Center fokus pada menganalisa data dari berbagai sumber untuk menentukan tren dan pola dalam aktivitas insiden. Informasi ini dapat digunakan untuk membantu memprediksi ancaman di masa depan atau memberikan peringatan dini ketika aktivitas tersebut sesuai dengan set karakteristik yang ditentukan sebelumnya.
  • Tim vendor menangani laporan kerentanan dalam perangkat lunak atau produk perangkat keras mereka. Mereka dapat bekerja di dalam organisasi untuk menentukan apakah produk mereka rentan dan mengembangkan strategi remediasi dan mitigasi. Tim vendor mungkin juga CSIRT internal untuk organisasi vendor. Misalnya, Tim Respons Insiden Keamanan Produk Cisco (PSIRT) adalah tim global khusus yang mengelola penerimaan, penyelidikan, dan pelaporan publik tentang informasi kerentanan keamanan yang terkait dengan produk dan jaringan Cisco. Cisco PSIRT menyediakan penasehat keamanan dan respons keamanan.
  • Penyedia respon insiden menawarkan layanan penanganan insiden sebagai layanan gratis untuk organisasi lain.
  • CSIRT dibahas juga dalam RFC 2350.

Saturday 11 August 2018

NSM Data : Session data

Session Data mendokumentasikan semua percakapan individu yang dilihat oleh sistem monitoring: siapa yang berbicara dengan siapa dan kapan. IP 5-tuple (souce ip, source port, destination ip, destination port dan protocol) dengan stempel waktu menyediakan item penting yang terkait dengan event session. Data yang lebih canggih juga dapat dimasukkan dalam session data. Misalnya, jumlah byte total dan jumlah paket total dapat dihitung di kedua arah.

Security Onion menawarkan beberapa alat yang dapat menangkap session data, termasuk Bro, Argus, dan PRADS. Di NSM, umumnya merupakan praktik terbaik untuk membatasi redundansi. Meskipun ada pengecualian, tidak efisien memiliki banyak alat untuk mengumpulkan dan menyimpan data yang sebagian besar sama. Bro dapat menghasilkan lebih banyak session data. Analis dapat mengkonfigurasinya untuk menghasilkan data sesi, data transaksi, konten yang diekstrak, data statistik, metadata, dan data peringatan. Untuk alasan ini, administrator Onion Keamanan biasanya akan memilih untuk mengimplementasikan Bro tetapi tidak Argus atau PRADS.

Bro adalah framework analisis jaringan yang ditulis dalam bahasa scripting khusus yang juga diberi nama Bro. Instalasi Bro secara default menyediakan beberapa fungsi NSM. dengan memberikan catatan audit dari setiap sesi jaringan yang terlihat pada kabel. Ini juga menyediakan catatan audit di application layer. Misalnya, semua sesi HTTP dilacak dengan jenis URI yang diminta, MIME, dan respons server. Bahasa scripting Bro menyediakan analisa untuk banyak protokol yang umum digunakan yang dapat digunakan untuk analisis semantik pada application layer
Session data sangat sederhana, dan dapat digunakan untuk menjawab banyak pertanyaan penting yang muncul di SOC. Threat intelegence report dapat memberikan daftar alamat IP eksternal yang mencurigakan. session data dapat digunakan untuk melihat apakah sistem internal telah berkomunikasi dengan salah satu alamat IP eksternal yang mencurigakan. Demikian pula, jika port TCP tertentu dikaitkan dengan perintah dan kontrol kampanye malware yang aktif, data sesi dapat digunakan untuk melihat apakah sistem internal berkomunikasi dengan menggunakan port TCP tsb. Jika host internal telah diidentifikasi telah dikompromikan, session data dapat mengidentifikasi sistem internal lain yang telah dikomunikasikan dengan (gerakan lateral potensial) dan setiap sistem eksternal yang telah dikomunikasikan dengan (potensi pencurian data).

Tools dan Data Network Security Monitoring (NSM)

Pada tahun 2002, Bamm Vischer dan Richard Bejtlich mendefinisikan NSM sebagai "pengumpulan, analisis dan eskalasi indikasi dan peringatan (I & W) untuk mendeteksi dan menanggapi adanya gangguan (intrusi)"

NSM Tools

Beberapa jenis alat pemantauan keamanan jaringan (NSM) dapat mengumpulkan data yang tersedia bagi analis keamanan jaringan untuk ditinjau. Setiap jenis alat memiliki penerapannya sendiri. Data harus dikumpulkan, dikelola, dan disajikan kepada analis, sehingga setiap SOC harus memiliki seperangkat alat untuk menyediakan layanan ini.

Ketika akan memilih alat untuk NSM ada banyak pilihan. Tidak ada standar untuk alat NSM dalam SOC dan setiap SOC memilih perangkatnya sendiri. Ada beberapa kesamaan antara jenis alat yang digunakan, tetapi tidak secara spesifik.

Dari perspektif data, tujuh jenis data NSM akan dibahas, termasuk data sesi (session data), pengambilan paket lengkap (full packet capture), data transaksi, konten yang diekstrak, data peringatan, data statistik, serta metadata.

Analis keamanan jaringan berfokus pada data NSM. Tanpa data NSM, analis SOC tidak bisa melakukan pekerjaan mereka. Tanpa alat NSM, analis SOC tidak akan memiliki data NSM. Alat NSM adalah perangkat lunak yang mengumpulkan, memelihara, memproses, dan menyajikan data pemantauan keamanan jaringan.

Fungsi yang terkait dengan sistem manajemen syslog terpusat, yang merupakan contoh alat pemantauan keamanan jaringan, termasuk yang berikut:
  • Menerima pesan syslog dari klien syslog yang didistribusikan di seluruh jaringan, dan menyimpan pesan-pesan itu dalam file log datar
  • Memindahkan pesan dari file log ke database relasional performa tinggi
  • Memproses data tingkat rendah dalam basis data relasional untuk menghasilkan konstruksi informasi tingkat lebih tinggi
  • Menyajikan data syslog dalam bentuk laporan otomatis, dasbor, dan respons kueri real-time

Alat SOC bisa sulit dikategorikan. Empat fungsi yang disebutkan untuk manajemen syslog terpusat dapat diimplementasikan dengan alat monolitik tunggal atau mereka masing-masing dapat diimplementasikan dengan alat individu. Alat dapat bekerja dengan beberapa jenis data atau beberapa sumber data. Sebagai contoh, satu alat dapat bertanggung jawab untuk menerima syslog, NetFlow, dan pemberitahuan IPS.



Alat SOC bisa bersifat komersial, open source, atau homegrown. Alat komersial cenderung dipoles, berfitur lengkap, dan menawarkan dukungan vendor, tetapi cenderung mahal. Alat sumber terbuka cenderung kurang dipoles, tetapi seringkali sangat mampu dan dapat didistribusikan secara bebas. Bebas didistribusikan bukan berarti gratis. Alat sumber terbuka masih memerlukan sumber daya komputer dan mereka memerlukan sumber daya administrator untuk instalasi, konfigurasi, dan pemeliharaan. Dukungan teknis sering dianggap sebagai keuntungan dari alat komersial, tetapi mungkin juga tersedia untuk alat sumber terbuka. Beberapa vendor menggunakan model open sourcing produk mereka dan mendapatkan keuntungan dengan menawarkan dukungan teknis berbasis kontrak.

Alat-alat Homegrown umum di SOC. Beberapa organisasi memiliki tim programmer yang menyediakan platform alat canggih. Juga, skrip sederhana ditulis untuk menyediakan fungsi-fungsi yang tidak ada dalam set alat yang lebih besar, atau untuk menyediakan fungsi yang ada dengan cara yang lebih efektif. Seorang analis SOC akan menemukan keterampilan scripting dan programming sebagai aset yang berharga.


Tidak ada perangkat standar yang secara universal digunakan di semua SOC. Setiap SOC akan menerapkan seperangkat alat yang unik untuk memenuhi seperangkat persyaratannya yang unik. Bahkan, analis individu dalam SOC mungkin lebih memilih alat yang berbeda untuk analisis dan penyajian data NSM. Selain itu, perangkat suite yang digunakan dalam SOC diharapkan akan terus berkembang seiring waktu.


NSM Data

Data NSM dapat diklasifikasikan dalam berbagai cara. Enam tipe data NSM yang umum dikenal adalah sebagai berikut:
  • Data sesi: Data sesi adalah data ringkasan yang terkait dengan percakapan jaringan. Detail data sesi yang berbicara dengan siapa dan kapan. Seorang analis SOC yang memeriksa data sesi mirip dengan detektif yang memeriksa tagihan telepon. Data sesi didasarkan pada IP 5-tupel: alamat IP sumber, port sumber, alamat IP tujuan, port tujuan, dan protokol lapisan transport.
  • Pengambilan paket penuh (full packet capture): Pengambilan paket penuh mencatat semua lalu lintas jaringan, paket dengan paket, di lokasi jaringan tertentu. Data ditulis ke disk, umumnya dalam format PCAP. Seorang analis SOC yang memeriksa paket menangkap penuh mirip dengan informasi penyadapan detektif meninjau. Di luar siapa yang berbicara kepada siapa dan kapan, rincian pengambilan paket lengkap persis apa yang dikomunikasikan. Pengambilan paket penuh juga biasa dikenal sebagai data konten lengkap.
  • Data transaksi: Data transaksi biasanya berada di antara data sesi dan pengambilan paket lengkap. Data transaksi menangkap detail yang terkait dengan permintaan dan tanggapan. Misalnya, server web dapat mencatat permintaan GET yang dibuat oleh klien, bersama dengan respons server terhadap permintaan. Server email dapat mencatat koneksi SMTP dan merangkum pesan email yang diproses dalam koneksi. Sistem operasi host dapat mencatat permintaan akses masuk dan respons sistem operasi terhadap permintaan.
  • Data peringatan: Data ini biasanya dihasilkan oleh sistem IPS. Peringatan dihasilkan ketika lalu lintas jaringan sesuai dengan kondisi tertentu yang dikonfigurasi untuk merespons IPS. Ketepatan data peringatan sangat tergantung pada seberapa baik IPS disetel. Tetapi bahkan IPS yang disetel dengan baik dapat menghasilkan kondisi positif atau salah palsu yang salah. Analis harus berhati-hati untuk memperlakukan data peringatan apa adanya. Lansiran adalah panggilan penilaian otomatis yang dibuat oleh alat yang direkayasa.
  • Data statistik: Ketika data NSM dikumpulkan dari waktu ke waktu, data dapat diproses untuk menghasilkan data statistik. Banyak jenis pertanyaan dapat dijawab dengan data statistik:
    • Berapa banyak permintaan per detik yang diterima server web ini?
    • Berapa banyak permintaan DNS per detik yang dibuat dari dalam?
    • Seberapa sering pengguna ini masuk ke sistem itu?
    • Apakah ada siklus dalam pola data berdasarkan waktu hari, hari dalam seminggu, atau hari dalam sebulan?
    • Data statistik yang dikumpulkan dari waktu ke waktu menghasilkan baseline. Garis dasar menentukan apa yang normal. Baseline harus mencakup interval yang cukup panjang untuk menyertakan penyimpangan periodik yang diharapkan, seperti peningkatan lalu lintas karena backup mingguan terjadwal. Baseline tidak boleh mencakup interval yang lama sehingga data historis tertua mendistorsi norma saat ini. Penyimpangan dari apa yang normal sering menarik dari perspektif NSM. Penyimpangan dari normal disebut anomali. Deteksi anomali dapat dilakukan secara otomatis dengan dimasukkan ke dalam sistem IPS. Analis juga dapat secara manual membandingkan kondisi yang diamati dengan garis dasar selama proses analisis.
  • Metadata: Metadata adalah data tentang data. Metadata dapat digunakan untuk menambah data NSM yang dikumpulkan langsung oleh SOC. Data geolokasi, skor reputasi, dan kepemilikan yang terkait dengan alamat IP adalah contoh metadata yang terkait dengan alamat IP.
Setiap jenis data NSM memberikan nilai unik kepada analis. Tidak ada tipe data tunggal yang dapat memenuhi semua persyaratan analisis. Ada pro dan kontra untuk masing-masing. Misalnya, pengambilan paket lengkap menyediakan catatan komunikasi jaringan yang paling akurat dan terperinci, tetapi memerlukan sumber daya jaringan yang signifikan untuk menangkap, menyimpan sumber daya untuk dipelihara, dan menghitung sumber daya untuk diproses. Ini juga bisa menjadi data yang paling membosankan bagi analis untuk diajak bekerja sama. Dibandingkan dengan paket capture penuh, data sesi membutuhkan lebih sedikit dari setiap sumber daya namun tetap memberikan nilai yang signifikan.

Korelasi adalah kunci kemampuan analis untuk menggunakan semua tipe data NSM. Analis harus dapat menghubungkan kejadian dalam satu set data dengan kejadian di set data lainnya. IP 5-tupel sangat penting untuk korelasi peristiwa. Misalnya, peringatan IPS mungkin berisi 5-tupel penuh yang dikaitkan dengan percakapan jaringan yang mencurigakan. Menggunakan hanya sumber dan alamat IP target sebagai filter tampilan pada data sesi dapat mengungkapkan jika ada percakapan lain antara kedua sistem ini. Hanya menggunakan alamat sumber tersangka sebagai filter tampilan pada data sesi dapat mengungkapkan apakah host tersangka telah berkomunikasi dengan sistem internal lainnya. Menggunakan 5-tupel penuh dari entri data sesi dapat digunakan untuk mengekstrak percakapan tunggal tersebut dari pengambilan paket lengkap. Selama proses analisis, analis harus menentukan informasi penting apa yang saat ini tidak mereka ketahui, dan kemudian menggunakan korelasi antara kumpulan data NSM yang berbeda untuk dapat memahami gambaran lengkap.