if99.net

IF99 ITB

Membuat file dengan SHA1 collision

without comments

Sejumlah ilmuwan dengan didukung kekuatan komputasi Google berhasil melakukan serangan SHA1 collision terhadap dokumen PDF. Mereka menciptakan dua file PDF dengan nilai SHA1 hash yang identik walaupun isi filenya berbeda.

shattered-1.pdf dan shattered-2.pdf memiliki SHA1 yang sama

Lalu kenapa kalau ada 2 file SHA1-nya sama?

Hash seperti MD5 atau SHA1 sering digunakan sebagai fingerprint untuk mengidentifikasi sebuah file. Mirip seperti sidik jari kita yang karena keunikannya bisa digunakan untuk mengidentifikasi seseorang dengan tepat. Bayangkan bila ada 2 orang yang sidik jarinya sama, tentu akan berbahaya dampaknya kalau sampai tertukar identitasnya. Masih banyak bahaya lain dari hash collision, silakan baca tulisan saya sebelumnya tentang bahaya memakai MD5.

Salah satu bahaya dari collision untuk PDF adalah pemalsuan dokumen, dengan kata lain akan mudah memalsukan dokumen PDF walaupun sudah dilindungi dengan tandatangan digital. Dokumen penting seperti perjanjian bisnis, surat kontrak, akta jual beli, sangat rawan untuk dipalsukan.

Bisakah collision SHA1 dilakukan untuk file selain PDF? Tentu bisa, dalam tulisan ini saya akan menunjukkan cara membuat SHA1 collision untuk file PHP dan HTML/Javascript. Mari kita mulai dengan memahami cara kerja SHA1.

Cara kerja SHA1

SHA1 mengubah input data sepanjang berapapun, menjadi string singkat dan padat sebesar 20 bytes (40 byte dalam hexstring). Bagaimana caranya?

Seperti kita makan, kalau makanannya sangat besar tentu sulit untuk menelan sekaligus semuanya, makanya biasanya kita memotong-motong makanan jadi potongan kecil-kecil yang cukup untuk masuk ke mulut. Begitu pula dengan SHA1, dia bekerja dengan memotong input dalam blok-blok berukuran 64 byte dan memprosesnya satu per satu dari blok pertama sampai blok terakhir.

contoh sha1 memproses 3 blok input

SHA1 menggunakan compression function, yang menerima 2 input yaitu 20 byte hash awal (input hash) dan 64 byte blok data untuk menghasilkan 20 byte hash keluaran (output hash). Karena fungsi ini menerima hash dan menghasilkan hash juga, maka hash keluaran dari fungsi ini bisa dipakai sebagai hash masukan untuk memanggil fungsi ini lagi untuk blok berikutnya.

Khusus untuk blok pertama, karena tidak ada blok sebelumnya, maka perlu ada nilai hash awal (initial hash) yang sudah ditetapkan yaitu 0x67452301EFCDAB8998BADCFE10325476C3D2E1F0. Jadi semua SHA1 untuk input data apapun selalu berawal dari nilai hash yang sama, kemudian untuk setiap blok, hash awal ini berevolusi menjadi hash yang berbeda. Hash yang dikeluarkan dari blok terakhir menjadi nilai hash final dari keseluruhan input data.

Analisa shattered-1.pdf dan shattered-2.pdf

Mari kita bandingkan shattered-1.pdf dan shattered-2.pdf. Ternyata perbedaannya hanya dari offset 192 ke 320 (128 bytes), sedangkan di luar range tersebut isinya sama.

vimdiff shattered PDF

Karena SHA1 bekerja menggunakan block berukuran 64 byte, maka bisa kita lihat 2 file tersebut diawali dengan prefix yang sama sebesar 3 blok (common prefix), diikuti dengan 2 blok yang berbeda ( collision block), kemudian setelah itu diikuti dengan byte yang sama sampai akhir file.

shattered PDF structure

Kalau dilihat lebih detil lagi sebenarnya dalam collision block tidak semua byte berbeda, hanya 62 byte saja yang benar-benar berbeda. Perbedaan byte-byte pada posisi tertentu tersebut, terkait dengan format PDF dan sudah diatur sedemikian rupa sehingga bisa menghasilkan gambar yang berbeda ketika dilihat dengan PDF viewer.

byte differences

Dengan implementasi sha-1 yang dimodifikasi, kita bisa melihat intermediate hash yang dihasilkan setiap blok. Mari kita lihat hash yang dihasilkan oleh 5 blok pertama dari shattered-1.pdf dan shattered-2.pdf pada gambar di bawah ini.

intermediate hashes

Dari 5 blok pertama shattered-1 dan shattered-2, perbedaan hanya ada pada blok ke-4 dan blok ke-5, blok ke-1 hingga ke-3 sama persis (common prefix) sehingga bisa kita lihat 3 hash pertama yang dihasilkan juga sama. Hash yang dihasilkan dari 3 blok common prefix ini adalah 0x4ea9…bf45. Kita bisa melanjutkan rangkaian rantai compression function ini dengan blok ke-4 dan ke-5 (collision block).

first 3 hashes

Selanjutnya hash dari common prefix, 0x4ea9…bf45, akan menjadi input untuk memproses blok-4. Karena isi blok-4 berbeda, maka kedua file menghasilkan 2 hash yang berbeda. Menariknya perbedaan tersebut hanya 6 byte saja.

Selanjutnya, 2 hash yang berbeda (keluaran dari blok-4) menjadi input untuk memproses blok-5. Ada yang ajaib disini, kedua file menghasilkan hash yang sama walaupun input hash dan isi blok ke-5 kedua file tersebut tidak sama. Perhatikan ilustrasi di bawah ini, perbedaan dimulai dari blok-4 namun blok-5 menyatukan perbedaan itu seolah tidak ada yang berbeda dari kedua file karena hash untuk 5 blok pertama keduanya sama, 1eac…8ac5.

collision blocks

Membuat collision SHA1 untuk file PHP

Mari kita mulai membuat 2 file PHP yang isinya berbeda dan melakukan hal yang berbeda (good.php dan evil.php), namun SHA1 dari kedua file tersebut sama. Bagaimana caranya? Apakah perlu super komputer? Tidak perlu, kita hanya perlu mengeksploitasi cara kerja SHA1 yang memproses hash blok demi blok.

Ingat bahwa hash keluaran dari blok ke-5 kedua file tersebut sama. Karena output hash dari blok ke-5 akan menjadi input hash untuk memproses blok ke-6, maka bila isi blok ke-6 kedua file tersebut sama, maka bisa dipastikan hash keluaran blok ke-6 keduanya juga sama. Dengan kata lain, selama kedua file memiliki common suffix (isi yang sama untuk blok ke-6 dan seterusnya), maka hash akhir keduanya akan sama.

Bila diketahui M1 dan M2 adalah dua blok yang berbeda, namun memenuhi

SHA1(common prefix+M1) = SHA1(common prefix+M2)

maka menambahkan common suffix setelahnya akan membuat SHA1 keduanya tetap sama.

SHA1(common prefix+M1+common suffix) = SHA1(common prefix+M2+common suffix)

Eksploitasi ini biasa disebut dengan hash length extension, yang ada pada fungsi hash yang menggunakan struktur Merkle-Damgard seperti MD5 dan SHA. Silakan baca tulisan saya sebelumnya tentang serangan ini hash length extension attack

Common suffix, payload PHP

Pada gambar di bawah ini, terlihat bahwa 320 byte (5 blok) pertama good.php berasal dari 5 blok pertama shattered-1, sedangkan 320 byte pertama evil.php berasal dari 5 blok pertama shattered-2. Selanjutnya diikuti dengan common suffix berupa payload php yang sama pada kedua file.

structure evil and good php

Walaupun code php pada payload sama, namun code tersebut harus melakukan hal yang jahat dalam evil.php dan tidak melakukan apa-apa pada good.php, bagaimanakah caranya? Tentu tidak bisa hanya sekedar melihat filename apakah evil/good, karena filename bisa diubah-ubah.

Caranya adalah payload code tersebut perlu membaca 320 byte pertama dirinya sendiri, kemudian menentukan bila 320 byte tersebut berasal dari shattered-1, maka itu artinya good.php, sebaliknya bila berasal dari shattered-2, maka itu artinya evil.php.

shattered-2 unique string

Pada shattered-2 terdapat string “x0Z!Vd” yang tidak ada di shattered-1, sehingga string ini bisa dijadikan indikator untuk shattered-2. Bila ditemukan string “x0Z!Vd” dalam 320 byte pertama, maka itu artinya adalah evil.php karena 320 byte pertama dari evil.php berasal dari shattered-2. Kurang lebih payload code yang menjadi common suffix seperti di bawah ini.

<?php 
$body = mb_strcut(file_get_contents(__FILE__), 0, 320);
$position = strpos($body, "x0Z!Vd");
if ($position > -1) {
    // evil.php, do something bad, rm -rf /
} else {
    // good.php, do nothing
}
?>

Berikut ini adalah contoh evil.php dan good.php dengan payload seperti contoh di atas. Dengan diff terlihat dua file tersebut sebenarnya berbeda, namun shasum menghasilkan SHA1 yang sama persis.

$ diff -q good.php evil.php
Files good.php and evil.php differ
$ shasum good.php evil.php
9f98b1abdb660db00ce4b0d06576bca8988565e0  good.php
9f98b1abdb660db00ce4b0d06576bca8988565e0  evil.php

Ini artinya kita sukses membuat SHA1 collision untuk file php. Namun bagaimana dengan eksekusinya? Apakah script php ini bisa dieksekusi?

evil.php execution

good.php execution

Kita telah berhasil mengeksekusi evil.php dan good.php, namun apa yang sebenarnya terjadi disini, kenapa ada karakter-karakter yang merupakan bagian dari header PDF terlihat di awal, sebelum kode payload dieksekusi? Mari kita lihat isi file good.php berikut ini.

good.php hexdump

Dari hexdump tersebut kita melihat bahwa 320 byte pertama file good.php berasal dari 320 byte pertama shattered-1.pdf, kemudian diikuti dengan kode php sebagai common suffix.

PHP memiliki keistimewaan yang memungkinkan SHA1 collision ini bisa dilakukan. PHP interpreter hanya akan mengeksekusi kode php di antara tag “<?php” dan “?>”. Dengan begini, maka header PDF di atas kode PHP tidak akan menjadi masalah, kode php dalam payload akan tetap bisa dieksekusi dengan sukses. Kita tidak bisa melakukan ini untuk python file misalkan, karena interpreter python akan komplain syntax error akibat adanya header PDF di awal file.

Membuat collision SHA1 untuk file HTML

Dengan cara yang sama kita juga bisa membuat SHA1 collision untuk jenis file html yang mengandung javascript di dalamnya. Kita bisa membuat evil.html dan good.html yang berbeda, namun memiliki SHA1 yang sama. Berikut ini adalah payload yang menjadi common suffix. Disini kita menggunakan javascript untuk mendeteksi apakah terdapat string “x0z!vd” yang menandakan ini adalah file evil.html yang berasal dari shattered-2.pdf.

<html> <body>
<script>
var text = window.document.body.innerHTML.substr(0,320); 
var pos= text.toLowerCase().indexOf("x0z!vd");
if (pos > -1) {
    document.body.innerHTML = "<h1>I AM so evil, doing evil things...</h1>";
} else {
    document.body.innerHTML = "<h1>I AM GOOD!</h1>";
}
</script>
</body></html>

Berikut ini adalah setelah kita tambahkan common suffix setelah 5 blok pertama shattered file. File good.html dan evil.html memiliki nilai hash yang sama, namun isi filenya berbeda.

$ shasum good.html evil.html
4487d29d4ce7262c3cdb10edf4172ca7a3f2bf30  good.html
4487d29d4ce7262c3cdb10edf4172ca7a3f2bf30  evil.html
$ diff -q good.html evil.html
Files good.html and evil.html differ

Gambar di bawah ini menunjukkan tampilan di browser untuk good.html dan evil.html.

evil.html and good.html

Written by Rizki Wicaksono

March 21st, 2017 at 1:32 pm

Posted in Cryptography

Kenangan Pecel Kroya

without comments

Di daerah Antapani Bandung sering terlihat seorang perempuan penjual pecel. Dia mbak bakul penjual pecel asal Kroya, Cilacap. Setiap pagi dia keliling kompleks pemukiman di Antapani berjualan pecel dengan menggunakan sepeda. Pecelnya lumayan enak meskipun menurut saya agak kurang pedas (maklum cabe rawit merah harganya selangit saat ini, Rp140.000/kg). Saya beli satu porsi pecel pincuk (pecel dengan wadah daun pisang), pakai tambahan daun pepaya yang pahit biar enak di perut. Sayangnya nggak ada bunga kecombrang merah, padahal itulah khasnya pecel Kroya.

pecel1

pecel2

pecel3

Pecel Kroya? Hmm…saya jadi terkenang masa lalu ketika dulu main ke Solo, Yogya, atau Surabaya, saya selalu naik kereta api, biasanya kereta api ekonomi dari Bandung. Nah,  ketika kereta berhenti di Kroya, banyak penjual pecel di stasiun menawarkan pecel pincuk, harganya murah cuma seribu ribu rupiah.

pecel kroya

Pemandangan para perempuan penjual pecel di stasiun seperti ini adalah eksotisme masa lalu yang mungkin jarang terulang (Sumber foto: https://c1.staticflickr.com/4/3769/9959534334_c3bbc18d6a.jpg)

kroya4

Mbok bakul penjual pecel di stasiun Kroya. Bunga kecombrang merah menjadi hiasan pecel khas Kroya. (Sumber foto: http://haapengennulishe.blogspot.co.id/2010/09/haa-iki-pecel-kroya.html)

Sebagian penjual pecel masuk ke dalam kereta menawarkan pecelnya. Penumpang yang kelaparan memang sudah menunggu-nunggu pedagang asongan ini, terutama pecel itu, karena pakai lontong.Untuk membuat pecel itu terlihat menaik, maka di atasnya diletakkan bunga kecombrang yang berwarna merah sebagi hiasan, tapi juga bisa dimakan.

Sekarang tidak mungkin lagi beli pecel di stasiun Kroya karena pedagang pecel tidak boleh masuk ke dalam kereta. Jendela kereta bisnis dan ekesekutif juga tidak bisa dibuka. Kalau mau, ya berani turun gerbong untuk beli pecel itu, tapi resikonya bisa ketinggalan kereta karena berhentinya cuma dua menit.


Written by rinaldimunir

March 17th, 2017 at 3:41 pm

Suatu Siang di depan Aula Barat ITB

without comments

Aula Barat dan Aula imr ITB adalah karya arsitektur masa lalu yang tidak habis-habisnya menjadi objek untuk dilukis dan difoto. Bangunan yang cantik dan menjadi heritage kampus ITB dan juga heritage kota Bandung. Siang itu tampak beberapa orang mahasiswa fakultas  senirupa (atau Arsitektur ?) sedang membuat tugas menggambar. Objeknya adalah Aula Barat dalam sudut perspektif yang memikat. Dengan alas permadani berupa rumput yang hijau, bangunan Aula Barat itu tampak anggun.

albar1

albar2

 


Written by rinaldimunir

March 14th, 2017 at 3:15 pm

Posted in Seputar ITB

Nyaris 100% Anak Sudah Melihat Pornografi

without comments

Sebuah berita di harian lokal Bandung pagi itu membuat saya sangat kaget. Berita tersebut menyebutkan hampir 100% anak-anak sudah melihat pornografi. Nyaris 100%, itu berarti termasuk anakmu, anakku, anak kita, (hampir)  semua sudah melihat pornografi. Menyedihkan, kalau tidak bisa dibilang mengerikan. Sebab, pornografi sama bahayanya dengan narkoba. Narkoba menjerumuskan masa depan anak, sedangkan pornografi merusak otak anak yang akhirnya juga merusak masa depan anak (Baca tulisan saya yang lalu: Indonesia Darurat Pornografi).

pornografi

Menurut Maria Advianti dari KPAI yang melakukan riset tentang hal ini, sebagian besar anak melihat pornografi melalui gawai (gadget). Gawai itu dibelikan oleh orangtuanya atau meminjam gawai temannya. Umumnya gawai saat ini berupa smartphone yang dapat mengakses internet. Nah, melalui internet itulah anak-anak melihat pornografi, baik secara sembunyi-sembunyi maupun terang-terangan, baik sendirian maupun bersama  teman-temannya.

Jadi solusinya bagaimana nih? Mengeluh saja tidak ada gunanya. apakah anak-anak tidak usah diberi atau dibelikan gawai supaya mereka tidak bisa mengakses internet? Ini hampir mustahil, sebab mungkin saja mereka melihat pornografi itu dari gawai milik temannya, atau bahkan dari gawai orangtuanya.

Melarang anak menggunakan dan mengakses teknologi informasi (atau IT)  bukan solusi yang tepat. Cepat atau lambat ia akan menggunakannya juga. Di zaman digital ini hampir musykil memisahkan anak dengan teknologi informasi (komputer, telekomunikasi). Lihatlah, kehidupan kita saat ini sudah dikelilingi teknologi informasi. Teknologi informasi adalah keniscayaan peradaban yang mau tidak mau akan dihadapi seorang anak di dalam hidupnya.

Solusi yang bijak menurut saya adalah mengendalikan, mengawasi, dan mengedukasi. Orangtua perlu mengendalikan penggunaan gawai pada anaknya. Di rumah saya, sebelum anak berstatus siswa SMP, dia belum saya belikan ponsel. Untuk adiknya yang masih SD, penggunaan smartphone (pakai smartphone saya sendiri) hanya boleh dalam waktu tertentu dengan lama terbatas.

Setelah pengendalian, maka selanjutnya adalah mengawasi. Orangtua perlu mendampingi penggunaan smartphone oleh anak. Anak kita jangan dilepas begitu saja menggunakan smartphone. Umumnya anak-anak mengakses internet untuk main game aau nonton video di Youtube. Kalau anak kita mengakses game online, kita perlu memastikan apakah game online tersebut aman untuk anak (tidak mengandung konten kekerasan dan pornografi). Begitu juga video di Youtube yang dia lihat pun perlu dipastikan video yang aman. Tidak apa-apa menjadi cerewet melakukan cek dan ricek ini, kalau bukan kita yang melakukannya, lalu siapa lagi?

Last but not least, yang paling penting dari semua aksi itu adalah melakukan edukasi. Anak kita tidak 24 jam ada bersama kita di rumah. Dia berinteraksi dengan teman-temannya di luar rumah (sekolah, tetangga). Justru penularan pornografi itu lebih banyak dari interkasi dengan  orang lain. Oleh karena itu, sangat penting bagi orangtua membekali dan membentengi anaknya dari pengaruh negatif yang berasal dari lingkungan luar. Kuncinya adalah edukasi atau pendidikan. Anak kita perlu diedukasi dan diberitahu bahaya konten kekerasan dan pornografi. Anak kita perlu diajarkan nilai-nilai yag baik, apa yang boleh dan tidak boleh, mengapa boleh dan mengapa tidak boleh. Termasuk dalam hal ini adalah penanaman nilai-nilai agama. Jadi, jika dia berada di luar rumah dan tidak dalam kendali kita sebagai orangtuanya, maka harapan terakhir penahan pornografi adalah dari nilai-nilai edukasi yang kita tanamkan itu. Duh, Sulitnya Menjadi Orangtua Zaman Sekarang (Tentang Pornografi pada Anak dan Remaja). Kalau tidak berhasil juga, bablaslah kita, gagal mendidik anak!


Written by rinaldimunir

March 8th, 2017 at 4:18 pm

Posted in Pendidikan

Menerima Pemberian dari (Orangtua) Mahasiswa

without comments

Baru-baru ini Kemenristekdikti mengeluarkan surat edaran tentang larangan bagi dosen untuk menerima hadiah atau pemberian lainnya dari mahasiswanya. Tujuannya untuk menjaga integritas proses akademik antara mahasiswa dan dosennya. Dengan kata lain, dosen dilarang menerima gratifikasi dalam bentuk apapun dari mahasiswa yang berada dalam tanggung jawabnya (dosen wali, dosen pembimbing Tugas Akhir, dosen pengampu mata kuliah). Begitu juga mahasiswa dilarang memberi apapun kepada dosennya.

gratifikasi

Surat edaran tersebut ditanggapi secara beragam oleh para dosen di berbagai perguruan tinggi. Setidaknya tanggapan tersebut dapat  dibaca pada forum-forum diskusi di media sosial. Ada yang setuju, tetapi ada juga yang mengomentari bahwa jawabannya tidak hitam dan putih, tetapi ada variabel lain yang juga perlu dipertimbangkan. Misalnya, jika tiba-tiba ada mahasiswa yang pulang dari kampung lalu datang ke ruangan dosen membawa sedikit oleh-oleh, apakah langsung ditolak? Contoh lain, setelah mahasiswa bimbingan lulus sidang TA, dia sudah beres urusan laporan, nilai, wisuda dan sebagainya, artinya tidak punya hubungan akademik lagi, lalu datang memberikan kenang-kenangan (makanan, pulpen, batik, jam tangan, dll) sebagai ucapan terima kasih, apakah itu termasuk gratifikasi juga kah?

Pada prinsipnya saya sepakat dengan surat edaran tesrebut. Dulu saya pernah menulis tentang masalah gratifikasi di lingkungan kampus (baca: Termasuk Gratifikasikah Ini?). Jauh sebelum muncul surat edaran di atas, saya sendiri sudah berusaha untuk berhati-hati dalam masalah pemberian ini. Secara pribadi saya menolak secara halus pemberian mahasiswa yang masih ada urusan dengan saya. Ini untuk menjaga independensi dan conflict of interest. Pernah ada mahasiswa bimbingan saya membawa oleh-oleh dari kampung halamannya, saya mengucapkan terima kasih atas perhatiannya, namun dengan menyesal saya katakan bahwa saya tidak bisa menerimanya. Setelah saya jelaskan sikap saya ini, dia bisa mengerti. Saya sarankan kepadanya untuk membagi oleh-oleh itu untuk teman-temannya di lab saja :-).

Masih ada beberapa pengalaman lain tentang masalah pemberian ini dengan mahasiswa saya, baik mahasiswa S1, S2, maupun S3. Selama mereka masih dalam tanggung jawab saya, saya menjaga prinsip untuk tidak menerima pemberian atau hadiah dari mereka. Untunglah mahasiswa di ITB sudah paham tentang hal ini, jadi mereka juga tahu diri untuk tidak membawakan dosennya hadiah atau benda-benda lainnya selama mereka masih menjadi mahasiswa di kampus.

Tapi menjaga prinsip ini tidak selalu mudah untuk dipertahankan, khususnya jika yang datang itu adalah orangtua mereka. Saya pernah kedatangan orangtua mahasiswa di bawah perwalian saya. Maksud kedatangannya adalah untuk silaturahmi saja, kebetulan orangtua itu sedang dinas ke Bandung. Nah, orangtua mahasiswa ini ternyata datang dengan membawa oleh-oleh makanan khas dari kotanya. Ini sedikit oleh-oleh, Pak, katanya. Seharusnya saya tolak pemberian itu, namun saya tidak tega, tidak ingin menyakiti perasaannya. Saya tidak punya cara dan kata-kata yang tepat untuk mengatakan tidak. Saya tahu itu pemberian yang tulus. Saya terima juga akhirnya (maafkan saya jika ini termasuk gratifikasi). ?

Pernah juga sekali waktu orangtua mahasiswa di bawah perwalian saya datang bersilaturahmi membawakan oleh-oleh seperti batik, tas buat laptop, dan ikat pinggang. Saya sudah berkali-kali menolaknya, saya suruh bawa kembali, namun orangtua itu kekeuh mengatakan ini tidak ada maksud apa-apa dan meminta saya untuk menerimanya. Saya pun menyerah.

Pernah terpikir oleh saya untuk mengembalikan hadiah itu kepada anaknya (yang merupakan mahasiswa saya), namun tidak jadi saya lakukan, karena bisa muncul masalah baru seperti mahasiswa tersebut merasa malu, atau malah bisa menimbulkan konflik antara orangtua dengan anak. Saya pun pernah meminta pendapat kolega dosen bahkan Dekan, sebaiknya saya apakan hadiah ini, namun tidak ada jawaban yang memuaskan, mungkin mereka pun dilematis. Sampai saat ini barang-barang pemberian itu masih tersimpan rapi di dekat meja saya. Belum pernah saya buka bungkusnya, apalagi memakainya. Mungkin kalau kalau anaknya sudah lulus dari ITB, akan saya pertimbangkan lagi apakah akan tetap memakainya atau mau diapakan.

Untuk amannya bagi kami, kepada orangtua mahasiswa, kami himbau tidak usah membawa makanan atau barang apapun dari kota anda untuk dosen anak anda. Tidak semua kami mampu berkata tidak untuk menolaknya tanpa berniat menyakiti perasaan anda. Kalau mau berkunjung, silaturahmi, atau konsultasi, ya berkunjung saja, tidak perlu membawa macam-macam agar tidak dianggap gratifikasi. Kami menjadi dilematis dan serba salah.

Mungkin kasus-kasus di atas yang disebut variabel bagi sebagian orang, yang dalam hal ini jawabannya tidak hitam dan putih. Tetapi sekali lagi, menjaga prinsip itu tidak selalu mudah.


Written by rinaldimunir

March 6th, 2017 at 6:00 pm

Posted in Pendidikan

Paralel approach #flight #airport #airplane #cgk #jakarta (at…

without comments

Paralel approach #flight #airport #airplane #cgk #jakarta (at Soekarno-Hatta International Airport (CGK) (Tangerang, Banten)) via http://ift.tt/2lsloSg

Written by Veriyanta Kusuma

March 5th, 2017 at 5:49 pm

Posted in Uncategorized

Paddy field. #bantul #farm #morning #green #freshair (at…

without comments

Paddy field. #bantul #farm #morning #green #freshair (at Srandakan Mbantul - Jogja) via http://ift.tt/2mRHdaV

Written by Veriyanta Kusuma

March 5th, 2017 at 8:14 am

Posted in Uncategorized

Orchid. #orchid #cgk #bokeh #tangerang (at Terminal 3 Ultimate…

without comments

Orchid. #orchid #cgk #bokeh #tangerang (at Terminal 3 Ultimate Bandara International Soekarno Hatta) via http://ift.tt/2lXUgK0

Written by Veriyanta Kusuma

February 26th, 2017 at 6:07 pm

Posted in Uncategorized

Jakarta’s little Japan. #jakarta (at Blok M Square…

without comments

Jakarta’s little Japan. #jakarta (at Blok M Square Jakarta Selatan) via http://ift.tt/2lCWOdY

Written by Veriyanta Kusuma

February 24th, 2017 at 8:07 pm

Posted in Uncategorized

Smokey chicken satay. #food #kuliner #tangerang #satay (at…

without comments

Smokey chicken satay. #food #kuliner #tangerang #satay (at Kuliner pasar lama Tangerang) via http://ift.tt/2lcozt6

Written by Veriyanta Kusuma

February 23rd, 2017 at 8:07 pm

Posted in Uncategorized