Can bad guys record phone conversations without the carrier's knowledge? I know that, in most of the world, phone conversations are transmitted as digital data (whether frames in circuit switched protocols or packets). I know that several companies offer products which will convert GSM conversation data to VOIP at the base station or MSC level. I assume this data is not archived or saved anywhere (unless requested from authorities to the phone company). I think (but am not sure if this reflects today's world) this data is not encrypted for most of the travel from A to B (in GSM it's actually encrypted from the handset to the base station). I do know that most of the network infrastructure is reachable via IP from inside the owner company for management purpose.

My question is: is it technically possible for bad guys (or governments) to infiltrate from outside the routing infrastructure (without the phone company's knowledge) and archive / copy not just metadata, but conversations of one or more specific persons? Has this happened in the real world so far?

Giankun, this story by The Intercept says that it has already happened, as Steffen Ullrich said in the comments to your question. The link i provided above tells the long story about it. This second link talks about the greek incident and about another one that occurred in Italy.

There lots of articles about these incidents. Search for the names of dead engineers and results will pop up. There is also this blog entry titled "Who's murdering NSA whistleblowers?".

As you will note, officially, the mentioned institutions have no relation with the reported deaths, but the articles show that your question is already a reality.


Is this the end of malware use of DNS? I read about the release of a free dataset of malware related DNS queries called "Predict".  A researcher or network security team can download or query this data set and use it to identify malware communication using DNS.  Commercial vendors are already providing such services.

I know of two ways that malware might use DNS.

Look up the address of a web site it is supposed to communicate with for command and control purposes.
Use DNS itself to tunnel.

It seems like the dataset in the news article could protect against both.

In that first use, the malware program generates a number of domain names and queries each of them until one gets resolved to an IP address.  The bot then contacts the IP address of the command and control server.  This was a handy way to 1)  Not reveal specific IP addresses in the malware itself.  2) recover if a particular Command and Control server was taken down (or blocked by the network admins).

DNS in the second use is harder to stop because it communicates via DNS itself instead of TCP/IP.  Using a DNS server to try and filter traffic like this might be impractical.

So, cooperation like the "Predict" dataset makes malware use of DNS more risky because it will, on a daily basis, collect tens of thousands DNS queries and inform the world.  It won't find them all, of course, but probably enough to make use of DNS more risky.

So, knowing this, why use DNS at all?  Wouldn't it be easier and safer from the malware's point of view for it to simply contact one or more direct IP addresses instead of using DNS?  Why not just skip registering domains and just use IP addresses that blink in and out of existence and serve the same purpose?   Perhaps the problem of slowing down DNS by inpspecting DNS traffic still prevent full use of a dataset like "Predict"?

Note: PREDICT transitioned to IMPACT

  Is this the end of malware use of DNS?

No.  Might tweak the landscape a little, but not hugely.

  It seems like the dataset in the news article could protect against
  both.

It's useful for catching people using malware that other people have caught before.  It is not useful for catching someone who sets up a burner domain just for their attack against you, or someone who hasn't been caught by someone else yet.

  DNS in the second use is harder to stop because it communicates via
  DNS itself instead of TCP/IP. Using a DNS server to try and filter
  traffic like this might be impractical.

There are "DNS firewalls" that perform this sort of blacklisting; perfectly practical.  However, again, severely limited by the rules of the "blacklist" game.

  So, cooperation like the "Predict" dataset makes malware use of DNS
  more risky because it will, on a daily basis, collect tens of
  thousands DNS queries and inform the world. It won't find them all, of
  course, but probably enough to make use of DNS more risky.

  So, knowing this, why use DNS at all?

Something like the PREDICT GT Malware Passive DNS dataset (hereafter PREDICT-GTMPDNS) incrementally increases the risk, but I certainly wouldn't say it significantly increases the risk.  Malicious operators are comfortable operating in a world where their DNS-based web sites can be interdicted by filtering proxies, where their mail servers can be blocking using RBL, and where firewall rule routinely try to restrict egress traffic.

One of the reasons they use DNS is that it's difficult to block at egress - due to the indirect nature of DNS, you can't easily block some of it without blocking all of it.  You can even have DNS pointing somewhere benign, then cut it over to somewhere malicious briefly while you use it, then point it back... hard to do with an IP, easy with DNS.

  Wouldn't it be easier and safer from the malware's point of view for
  it to simply contact one or more direct IP addresses instead of using
  DNS?

Historically, the inflexibility of direct IP addressing has lessened it's attractiveness.  PREDICT-GTMPDNS could help reduce DNS's attractiveness, but not enough to rule it out.

  Why not just skip registering domains and just use IP addresses that
  blink in and out of existence and serve the same purpose?

It's harder to have IP addresses "blink in and out of existence" than it is domains.  And once you send out the malware with a hard-coded address, it's stuck on that address, and you can't just blink it out of existence without shutting yourself off.

  Perhaps the problem of slowing down DNS by inpspecting DNS traffic
  still prevent full use of a dataset like "Predict"?

The DNS inspection cost is low enough not to be an issue... the real problem, as with any blacklist, is the sample size and turnaround time.  If your database inputs cover 50% of the malware out there, that's insanely awesome... and still leaves one out of every two exploits free to maraud.  And let's say malware is found, submitted, run, and indexed a day after release... that's 24 hours in which that malware can run free and clear before the database catches up.

In reality, I think the inputs to PREDICT-GTMPDNS will be both less comprehensive and slower to catch up with new malware releases.  Playing catch-up sucks.

That's not to say PREDICT-GTMPDNS isn't an awesome idea.  It is.  But it's not any kind of silver bullet.


Current industry standard key management solution for web app on linux host The scenario: Data is sent to an application server and you want to selectively encrypt some data before sending it to a DB server for storage. All servers run some linux distro. This is a relatively high security situation where significant financial losses could be incurred if the data leaked, but at the same time this is not an issue of national security. Also, the servers are in a third-party cloud infrastructure, so HSMs are not an option. Specific regulatory requirements are not necessary, but I suspect the answer to this would satisfy the bulk of requirements.

Assumptions: Data is securely sent to the application server and application users are properly authorized for retrieval of data.

I have been searching for a while to come up with what is the currently accepted "industry best practice" for key management and keep coming across bits and pieces of good advice scattered about. Can someone point me to a resource that already answers this or can we come up with the best "currently accepted answer" to the exact scenario described above?

it sounds like you're looking for a solution to protect your data while it is "at rest".  You probably already know that it not sufficient just to protect data while it is "at rest", while ignoring the security while it is being processed.

if you have a budget to purchase commercial (paid) solutions, you might want to look into one of these.

Oracle Key Manager
RSA Data Protection Manager

There are lots of potential solutions which depend on what services you are using.  Amazon for instance offers solutions in combination with their Amazon Relational Database Service which provides he ability to encrypt data using format-preserving encryption.

You may want to look into "Transparent Data Encryption".  It would really help to know a little more about the architecture of your setup.  Is it a true cloud setup, or a colocation?

Lastly, I would urge you to consider the security implications of running "sensitive" data in the cloud.


Why do exploit kits use droppers? I've been looking into the structure of the online criminal underground, which consists of exploit kits, droppers, and malware payloads.

What is the function of the dropper in this pipeline? Why aren't payloads deployed directly by the exploit kit?

Droppers are a framework for deploying payloads. This is useful for botnets because the bot master can deploy his botnet without a specific payload, then rent out his network to his customers who provide the payload they want.

Crime-as-a-service. Got to love it.


Ban or delete abusive users I'd like to hear recommendations on a best practice for handling abusive users (for whatever reason) on an authenticated Website.

Is there any point in keeping the user in the database with a "banned" flag, or may you just as well delete the user?

Of course, in the latter case, people may re-register with the same email address, but in the prior case they may just as well re-register with a new, disposable email address, or a new mail alias on a domain they own.

So is there any real point of keeping banned accounts around in the database?

EDIT: It's a social media where people upload images and communicate. There are no IP restrictions on the site, and it's not an open forum.

As a rule, traceability is good. In some jurisdictions, you are supposed to keep logs for some minimum amount of time. So I would say: keep an entry for the banned user. Abusive behaviour may have legal consequences (depending on the kind of abuse, another user may wish to trigger legal retaliation, or law enforcement agencies might declare themselves interested on their own account). If you are not able to show logs and other traces, then you could be suspected of being an accomplice, which is rarely a good thing.

In any case, you most probably have other, technical reasons for keeping the banned user entry around. If your Web site is some kind of forum (a typical reason for banning being abusive behaviour when writing) then your forum database contains some messages which refer to the user as author. By deleting the user entry, you would make these references dangling links, which can only confuse your forum management software. Deleting the banned user would then entail deleting all traces of his activities on your site, i.e. pretending that the user never existed at all in the first place. This is probably hard to do, if at all possible.

Also, a user who gets banned is also a user who got bad reputation. You can delete forum posts and records, but you cannot delete reputation. If the user entry is destroyed, another user may register and happen to use the same name, thus unwillingly inheriting the dubious fame.


DTLS Record with weird cipher text I am using mbed TLS to deploy each a DTLS Server and a DTLS Client application. After the DTLS Handshake, the Client sends "Hi, Server" and then the Server answers "Hi Client". The connection is working fine and running.
(The negotiated Cipher Suite is TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384)

However, when I analyze the encrypted Application Data packets using Wireshark, I see a weird cipher text. The encrypted application data always seems to start with 00 01 00 00 00 00 00 01. Shouldn't it be pseudorandom? Might this be padding (and if, why this sequence)?

First Message ("Hi Server"):

0000   17 fe fd 00 01 00 00 00 00 00 01 00 21 00 01 00  ............!...
0010   00 00 00 00 01 f3 5f 8c 78 0f cf 25 08 54 ed 1c  ......_.x..%.T..
0020   60 ec b2 fe 05 bc ce e9 fe b5 f6 28 e6 e4        `..........(..

       17                    Content Type:    Application Data
       fe fd                 Version:         DTLS 1.2
       00 01                 Epoch:           1
       00 00 00 00 00 01     Sequence Number: 1
       00 21                 Length:          33
       00 ... e4             Encrypted Application Data

Second Message ("Hi Client"):

0000   17 fe fd 00 01 00 00 00 00 00 01 00 21 00 01 00  ............!...
0010   00 00 00 00 01 74 9d 2b 3f f4 6d 75 f1 47 a6 12  .....t.+?.mu.G..
0020   7c c1 7d 5e 49 13 69 c9 57 72 60 df 90 56        |.}^I.i.Wr`..V

       17                    Content Type:    Application Data
       fe fd                 Version:         DTLS 1.2
       00 01                 Epoch:           1
       00 00 00 00 00 01     Sequence Number: 1
       00 21                 Length:          33
       00 ... 56             Encrypted Application Data

As dave_thompson_085 suggested, the sequence at the beginning of the encrypted application data is the explicit nonce used by the GCM (Galois Counter Mode). Apparently, this is some kind of initialisation vector shared with the peer. Note that there might be an implicit part of the nonce which is not sent over wire.

The Transport Layer Security (TLS) Protocol (RFC5246), 6.2.3.3. AEAD Ciphers:

  For AEAD [...] ciphers (such as [CCM] or [GCM]), the AEAD function
  converts TLSCompressed.fragment structures to and from AEAD
  TLSCiphertext.fragment structures.

  struct {
     opaque nonce_explicit[SecurityParameters.record_iv_length];
     aead-ciphered struct {
         opaque content[TLSCompressed.length];
     };
  } GenericAEADCipher;

You can clearly see here, that the Ciphertext is preceded by nonce_explicit.

After some testing, i noticed that these bytes seems to involve a counter that increments with each sent message. Now I asked myself what sort of information is sent there?

RFC5246, 6.2.3.3.  AEAD Ciphers:

  Each AEAD
   cipher suite MUST specify how the nonce supplied to the    AEAD
   operation is constructed, and what is the length of the    GenericAEADCipher.nonce_explicit part

This means that I have to find the RFC where the AES with GCM is specified for TLS. Again, dave_thompson_085 also led me to this answer.

AES Galois Counter Mode (GCM) Cipher Suites for TLS (RFC5288), 3. AES-GCM Cipher Suites:

  Each value of the nonce_explicit MUST be distinct for each distinct
  invocation of the GCM encrypt function for any fixed key.  Failure to
  meet this uniqueness requirement can significantly degrade security.
  The nonce_explicit MAY be the 64-bit sequence number.

So these bytes are the explicit part of the nonce as specified in TLS. The implemtation (mbedTLS) used the sequence number for it. Thanks again to dave_thompson_085!


How to get a Network's WIFI Password through CMD? I found that Wifi's Password can be retrived using the network and sharing wizard in Windows, And Technicaly theres no way to store Passwords/collection of bytes in the memory after switching/shutting down your computer, and So the Network and Sharing Wizard is also an application, and it has to store the password any way, so it saves the password in the disk, so there must be a way in which i can get the password using CMD, or if not with CMD where can i get that key, I'm trying to learn hacking my Wifi system, I use c++, with Win32 and i dont need any other libray than win32, I will implement command shell in my application, im doing this just for a knowledge about windows computer security, So is there anyone reading this question tells the way using the command prompt to get the Wirless Network/Wifi Password? Or any other way in which i can get that key in my application even through parsing a system file/searching in registry(for example) or any thing, i can even be happier if i got the WPA/PSK encrypted key if not the ascii version of the key, Thanks in Advance!

Windows stores these encrypted in the following locations:

In Windows XP, wireless keys are stored in the Registry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WZCSVC\Parameters\Interfaces\[Interface Guid]. The [Interface Guid] is a unique GUID value the represents your wireless network card. The keys are well-encrypted by Windows operating system, so you cannot watch them with RegEdit.
In Windows Vista, wireless keys are stored in the file system under c:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\[Interface Guid]. The [Interface Guid] is a unique GUID value the represents your wireless network card. The keys are stored and well-encrypted inside the .xml files that you can find in the above path.

Via Nirsoft


When I sign a git commit, what is my signature actually based on? I'm curious about what data actually gets signed when I sign a git commit or tag? Is it simply the commit message and metadata?
How could I manually duplicate the signature, use gpg instead of git?

I took a look at the function "commit_tree_extended" in the git source code for the file "commit.c" (e.g., in this blob).
Based on reviewing this function, when you sign a commit it seems to be signing a string that contains identifiers for the tree object_id, parent object_id, author, committer, encoding (if not utf-8), commit_extra_header, and the commit message.


Setting up a security lab, looking for a little guidance I'm new here.  Over the past couple of years I've had a growing interest in the security aspects of IT/CS.  Recently, I've started setting up a lab for myself based on a kali/win7 dualboot and I've been following the instructions given via The Hacker Playbook in setting it up.

So far, I've got separate partitions for kali and windows, pretty much just booting into kali.  At the very beginning of the process covered in the book, VMplayer was mentioned as being needed.  I'm curious in what context it is needed...I've just logged straight into the root user account and began setting up my environment.  Should I have run kali in VMplayer first and THEN started installing or am I fine in doing what I'm doing now?  When will using VM be prudent?  Anyone with some experience would be greatly appreciated.

You first want to set up a host OS (Windows or Kali, whichever you prefer to use when you're not hacking.)  Inside that host OS, install a virtual machine platform (VMware, VirtualBox, whatever you choose.)  Inside the virtual machine control panel, create a first VM and install Kali, (presuming you want to use Kali for your pentest environment.)  I would configure the virtual network adapter of this first VM to permit it to connect to the internet so you can install updates, new tools, or whatever.  You can always disable this virtual network adapter later if you're going to try something risky.

Now, go back to the Virtual Box control panel, create a second VM to be your victim, and install a vulnerable guest OS such as Windows, or whatever other OS you want to attack.  Add a virtual network adapter to each VM that connects your VMs to each other, configuring this little virtual network so both the pentest and victim VMs are on the same virtual network.  Once it's all working to your liking, save a backup of your victim machine's virtual hard disk (VHD) image, and save your virtual machine configuration.  You now have an environment where you can instantly bring up a clean battleground, allowing you to test a fresh system from a known starting point.

You can install anything you like in your vulnerable system, hack on it all you want, infect it with malware, whatever.  Then when you want to try something else, restore a copy of the clean VHD image, and you're back to square one.

If you do plan to install malware on the victim, I'd recommend disabling any virtual adapter on the victim VM that allows it to connect to the host system or to the internet before you infect it.  You don't want this VM to infect the other computers in your home!  This is the main reason for running the pentest environment in its own VM, instead of directly on your host OS.  It could help contain the damage if your malware finds your Kali VM on the virtual network and tries to spread to it.

Another nice thing about the VM approach is that if you have an expiring licensed demo copy of something you want to attack, you can install it on a fresh VHD, attack it, and when it expires you just delete the old VHD, reinstall on a new VHD, and resume your attack.

As you learn how to break in, be sure to study how to configure the victim machine to prevent those kinds of attacks.  Whenever you like, perhaps when you discover something interesting, you can save a copy of the VHD so you can restore the machine to that point some time in the future.

Consider storing the victim machine's VHDs on removable media, such as flash drives or an external hard disk, or on a large network storage appliance.  Each VHD is a huge file, and you'll probably acquire a lot of them.  It helps to have a way to organize them that doesn't eat your system's main hard disks.  You may find a forensic tool like Autopsy helps keep your experiments organized.

Once you get practiced and comfortable with this setup, you will soon be creating different virtual machines with different operating systems to see how they can be attacked.  You may eventually add a third VM running a firewall, router, or other network appliance to see how to attack from outside a network, or how an NDIS might alert you to attacks.

Eventually when you're ready to tackle an external client's system, consider connecting a USB network adapter in your virtual Kali instance to help isolate your laptop from the client.  If you're going to work in a client environment that already has malware, make a backup of your Kali VHD, and run your VM using a clean copy.  This can help prevent it from spreading, and it's especially important to not spread an infection from one client to the next.


How should SSL traffic be treated once it has been terminated? Ideally, how should SSL traffic be treated once it has been terminated at an SSL appliance especially if the traffic contains sensitive information like personal financial information before it's being stored in a database?

I don't think it really matters how your application handles the data; if an attacker can access your application's memory you're busted anyway, no matter what security measures you take. So after the connection has been terminated it doesn't matter how you handle it, but it matters how you store it.

The answer is that you should store it encrypted, but then the problem is how to keep the encryption key private: Where to store a key for encryption?

Besides this, I don't think there is much to it.


Receiving encrypted Credit Card number - PCI We are in situation where our application receives a payment confirmation from a third party service, which includes an encrypted credit card number too. Our application needs to store the response. Other than that, in any way we not using the credit card number. The third party application is PCI certified.

Does our application comes under the scope of PCI?
If our application comes under the scope of PCI, will a self certification works?

(This question was first asked at Stack Overflow.)

under the assumption that the data is encrypted using strong crypto and you do not have the encryption key or an interface in the system that can de-crypt it than your app is out of scope


Give Someone Access to Secure Website? I have someone I hired on a Freelancing website working for me - so far he has worked for me for about two weeks and is doing a good job.

In order for him to complete his work he will need access to one of my accounts which has my credit card details in profile and other private details about myself. To complete his work he needs access to one or two pages on the website such as https://securesite.com/access but not to or https://securesite.com/settings.

I want to let him access the first URL but block access to all other pages including the second URL above.

I was thinking of setting up a remote server and logging into the respective site (even enabling remember my username / pass in case he gets logged out by site) and then installing a filter such as K9 (which allows me to block access to specific websites) and blocking access to every other page on the site besides the one he needs for the work.

However this will not work because K9 cannot filter https websites by URL. Is there any other solution?

Thanks

He needs only one page, right ?
Fine then, you might want to save it somewhere, so he can access only that page.

Assuming the data he is trying to get is static, and assuming it's only for data processing purposes he needs that access, wouldn't that be a solution to save it somewhere else to give him access only to that page ?

Unless it's the secure connector he is trying to set up... So, what is your guy actually trying to achieve ?


Use TOTP to prevent simulating requests I'm developing an API system which provides functionalities for a game. Currently, we are using HMAC to prevent simulating requests (let's say, prevent hackers from simulating the game) but because we encountered some issues with HMAC, I thought that it could be better to use a temporary password. Same as what Google Authenticator does.

I'd like to know is this a good approach to use TOTP to generate a temporary password from client and send it to the server via HTTP request and validate it on the server? The goal is to prevent simulating or sending requests from 3rd-party clients.

TOTP is an HMAC.  It just happens to be an HMAC of a timestamp with some granularity where the passwords need to be rotated.  Note that with either a time-based HMAC or some other HMAC, an attacker with a copy of a legitimate client can extract the shared key and use that key to forge requests from their client.


Conducting a succesful phishing test How do you usually conduct a safe phishing exercise to test the staff's security awareness? How do you ensure that staff are not offended by such an exercise? Would you in some circumstances also include the CEO without letting him/her know about it?

I think in some areas it's quite a controversial thing to do in an organization. I am trying to find out if it's suitable for us to perform one for our organization to raise awareness.

I run a service that tests people and organizations in their ability to spot and properly respond to phishing attempts.

You must let all users know that a test will be performed, even the CEO. This does not mean that you inform them then try to phish them right away. With a few days delay, people will stop being on guard against a test.

How this is done, and if this is done, needs to up to your organization's management and HR department. Even with warning, people will feel entrapped, targeted, and possibly bullied. Warning helps to reduce these feelings and your HR department will help you devise a way for people to express their concerns, if any.

No one can tell you if it is appropriate to do this in your organization but your management. Do NOT launch a test without authorization and approval from your management.


Is it safe to send sensitive data in the post body to an azure function? We want our users to send us a post request to an Azure Function endpoint. Is storing sensitive data (such as connectionstrings or passwords) in the post request body going to be an issue? Any insight would be greatly appreciated.

Sending sensitive data in a post request is a common approach. Take any form-based authentication mechanism for example. A user enters his credentials in the web-frontend (browser) and a post request is sent to the web-server in the backend. If this backend actually is a classical web application or an Azure function doesn't matter.

It is important though to ensure transport security. Using HTTPS (with TLS) is state-of-the-art in this regard. Appropriate algorithms, key-lengths and modes for your HTTPS configuration are defined in public standards and guidelines. I recommend the document SOG-IS Crypto Evaluation Scheme Agreed Cryptographic Mechanisms but there are others (with very similar recommendation). Depending on your location and/or your industrial sector, there might be specific standards and guidelines that are required for compliance.

One caveat in the end - just because it is appropriate, doesn't mean it is the best option you have. I do not know your actual requirements, so I cannot advise in this regard. That's something you have to evaluate.


Hiding Keepass databases and Truecrypt containers If I change the extension of a Keepass database (i.e. change the .kdbx to something like .txt), Keepass is still able to open it. Is this an effective way for hiding the databases from an adversary?! Probably no. So, what methods are there for hiding such files? What do you experts think about OpenPuff?
Is there any method to truly hide a (normal) Truecrypt container, so that its existence would be undetectable? Note that I'm not talking about "Hidden Truecrypt volumes."

2) In theory, yes.  A Truecrypt container, considered in the abstract, is indistinguishable from random noise.  In the absence of something pointing to the file and saying "this is a Truecrypt container" (eg. a recently-used files list), an attacker cannot prove that a given file is a Truecrypt container.

In practice, no.  Normal people do not carry around large blocks of random data on their computers, so a large file that is statistically indistinguishable from randomness and does not have is almost certainly an encrypted file.  If someone has a large random file and the Truecrypt software on their computer, it's a good bet that the file is a Truecrypt volume.

1) I'm not familiar with OpenPuff, but in general, I distrust steganograpy.  The data you're trying to hide rarely has the same statistical properties as the data you're hiding it in, eg. the well-known "hide the data in the low-order bits of an image" trick fails if the image has large areas of solid color (such as a cartoon) or the low bits are biased in non-random ways (as is common with digital cameras).  The best place to hide a needle is not in a haystack, but in a pile of other needles.


Differentiating between IKEv2 and OpenVPN Traffic There is a WiFi network that I regularly use, and it seems to be blocking all VPN traffic other than IKEv2. I tested this by downloading many of the free/freemium VPN apps from the Google Play Store on my phone. Only apps that use IKEv2 work, OpenVPN and other protocols fail. One app specifically allows me to choose between OpenVPN TCP, OpenVPN UDP, and IKEv2. Both OpenVPN options are blocked, but IKEv2 works well.

Would it be possible for the router/firewall to be able to differentiate between encrypted IKEv2 and OpenVPN traffic, or is it just relying on port numbers to block/allow connections?

Some additional information:

The network is already known to perform MITM attacks. For instance, I have a website that I run which has HTTPS traffic encrypted by a Lets Encrypt certificate. When I visit this website via the network, I get a warning that the certificate is not trusted. The certificate details reported by my phone while using the network are different from those reported by my phone when I am not using the network.
I believe that the reason IKEv2 traffic is not blocked is that the network operators provide an optional VPN for use by devices on the network. I am guessing that said VPN uses IKEv2, and thus all IKEv2 traffic is unblocked (I don't know why all IKEv2 traffic is allowed, though).

Yep, if you had something like a palo alto / fortinet behind the wifi network, it would be able to distinguish VPN types based on application signatures.  Having a quick squizz at the ruleset for the openvpn app-id on my palo altos says you need port 1184 open as well as 443 and 80, so even if you were allowing access to IKE-V2 using a port-filtering firewall only,it still wouldn't work.


Nmap showing ISPs router's DNS port in addition to target's ports Whenever I do nmap scans, it seems that the information related to port 53 is altered by my ISP router as follows:

$ nmap -T4 -A -v stackoverflow.com

PORT     STATE SERVICE  VERSION
53/tcp   open  domain   MikroTik RouterOS named or OpenDNS Updater
.... // Ports related to the actual stackoverflow.com scan: 21, 22, 25, 80...

This happens for every target IP or hostname: scanme.nmap.org, google.org, etc

However, if I do a scan using an online scanner such as https://hackertarget.com/nmap-online-port-scanner/, it shows the exact details and doesn't show this 53 service.

Starting Nmap 6.46 ( http://nmap.org ) at 2015-12-26 22:11 CST
Nmap scan report for stackoverflow.com (104.16.37.249)
Host is up (0.00093s latency).
Other addresses for stackoverflow.com (not scanned): 104.16.35.249 104.16.34.249 104.16.33.249 104.16.36.249
PORT     STATE    SERVICE       VERSION
21/tcp   filtered ftp
22/tcp   filtered ssh
25/tcp   filtered smtp
80/tcp   open     http          cloudflare-nginx
443/tcp  open     ssl/https     cloudflare-nginx
3389/tcp filtered ms-wbt-server

How do I avoid this.

Important: Off topic but my network may be in a MITM attack. Could a MITM cause this?

It apears that your router's firewall has hijacked your DNS requests. I found these instructions on your router's wiki page which describe exactly how to do that:

  Force users to use specified DNS server

  This is just simple firewall rule which will force all Your users
  behind RB to use DNS server which You will define.

  In /ip firewall nat

  add chain=dstnat action=dst-nat to-addresses=192.168.88.1 to-ports=53
  protocol=tcp dst-port=53

  add chain=dstnat action=dst-nat to-addresses=192.168.88.1 to-ports=53
  protocol=udp dst-port=53

  This rule will force all users with custom defined DNS server to use
  192.168.88.1 as their DNS server, this rule will simply redirect all request sent to ANY-IP:53 to 192.168.88.1:53

If you can log into your router, you may be able to undo the damage yourself. If not, your ISP would have to make the change. Your other options will be complex, like setting up a VPN.

Please note that your country may have laws regarding DNS that may have forced your ISP to provide only government-approved DNS name resolutions. For example, Turkey required the removal of Twitter's servers from DNS due to all the public tweets criticizing their corrupt cabinet. I would not advise you to attempt to work around this restriction if it means going to jail.


Intercepting SSL traffic on Android app I am trying to intercept SSL traffic from my Android app to test the security. I am using certificate pinning in the hopes I can prevent people from snooping. I have tested by configuring ProxyDroid to route traffic through my proxy, for which I have used both Fiddler and Charles. However, I get different results with the two proxy server softwares.

With Fiddler I was not able to intercept traffic and my app fails to connect to the server. I even manually imported the Fiddler root certificate into /system/etc/security/cacerts and verified that it shows up in the system truststore, but still my app behaves as it should.

With Charles, however, I didn't even need to import the root certificate to my Android phone. Out of the box, I was able to intercept all SSL traffic between my app and my server.

So my question is, how is it possible for Charles to accomplish this even though Fiddler is not able to?

If Charles proxy is able to intercept SSL/TLS traffic,  then certificate validation has failed.  This demonstrates that the mobile device is not properly verifying the server's certificate.

In a mobile security assessment, certificate pinning can be disabled by hooking the platform's SSL/TLS implementation and changing how certificate validation works.  An example of this attack is the Android SSL bypass or iOS SSL killswitch.


Is storing card details without the permission of the card holder against PCI DSS? I've bought something from an online store, and when entering the card details, it sent the details to their server through a HTTPS connection, which I then assume they forwarded to their provider - who that is I don't have a clue.

I've since read on their site and they do say that they'll store card details, but:

I cannot see these details or anything that would indicate stored card details on my account section.
I had no option to save the card details for later use when entering them.
I have no idea if they're storing the details as a token with their provider or in a plain text file on somebodys desktop. For what it's worth, I made the purchase and recieved the goods 3 weeks ago, yet the money has only just come out my account now which seems a little unusual.

So, is storing card details without the card holders permission a breach of PCI DSS? I've looked at the PCI-DSS documents and while they're fairly detailed, I can't find any mention of this.

As far as I'm aware PCI-DSS doesn't cover permission of the user for storing data (depending on where you live something like the Uks Data Protection Act might).  That said if a company is storing full track data (inc CVV2) they wouldn't be compliant with DSS. They may only store card details for the purposes of tracking things like chargebacks, although from what I've seen many merchants are moving away from storing card details if at all possible due to the resultant compliance headaches.


Find a stolen iphone that isn't activated I called Apple to see if they could ping my stolen iPhone 4. They said that they cant because the "find my iphone" isnt on. The phone isnt activated but the person who stole it has been using it to get into my emails, Facebook and other apps linked to my Apple ID, because as most know as long as there is wifi iPhones can used to do everytjing except make calls and text.
Is there a way to find the location of the phone using the IMEI and the last time it was on wifi?

Your carrier has a history of the approximate location of the phone based on the cell towers it connects to.

Get in touch with the police and they will in turn contact the carrier to get the info from them.

If the person connected the iPhone to their own Wi-Fi you can also ask the police to obtain the connection logs from your online services still configured on that phone (e-mail, Facebook, etc). With the IP address of the Wi-Fi connection it'll be very easy for them to track down the owner of that particular Internet connection.


Can the Android Snapdragon Vulnerabilities be used to root a phone permanently? Would it be possible to use the discovered vulnerabilities (CVE-2016-0819 and CVE-2016-0805) to root a phone permanently without any dataloss and install applications like SuperSU?

There will propably establish a praxis like:
Downgrade to vulnerable Software -> Execute Exploit / Run Code as root -> Install / Upgrade Software to save level

There is a post in the xda-developers board adressing this technique.


Why does sandboxie require admin privileges when it runs a software installer that requires it? Shouldn't it just "emulate" the admin privileges like everything else? Why dose it actually require it? And is there any security problems with that?

This is a generic answer, since I haven't looked at sandboxie in most of a decade.

There are many software functions that can't be meaningfully sandboxed. Either they are things which inherently require high privileges (like installing drivers or otherwise interacting with the kernel) or they lose their value if sandboxed (a virus scanner that can't read most of the file system is a pretty worthless thing). There are also things which could, in theory, be done by a lower-privilege account or sandbox, but only of the OS is configured with non-default values to allow this (such as installing a Windows Service).
Some such things can be "emulated", but often doing so amounts to creating a miniaturized OS installation that can't interact with the host system. This can be useful for some sandboxing - it's essentially what a VM is, and can also be used with container systems such as Docker - but again that only works for software that doesn't need to interact with the host system at all.
Sandboxed processes frequently, at installation, need to perform some privileged operations. These might be simple things, like changing a file association to open with the new program (that can be done on a per-user basis if the installer is not sandboxed, but if you want it machine-wide the installer must run as Admin, and in any case it can't be emulated). They also can be relatively complex, like creating a new Windows account and installing a Windows service that automatically runs under it when certain conditions are met; depending on what the service does / what permissions it has and what conditions it starts under, this might technically be possible to emulate but it would be very complicated to detect an installer trying to do this and fake support for it.

As for security problems, there certainly can be, if the installer is malicious (e.g. a Trojan) or simply sloppy (perhaps it changes the ACLs on some directory to make it easier for the app to operate, but now other non-admin users can overwrite important files). Most commonly, though, sandboxie and software like it is intended to contain the damage from an exploit, rather than to contain known-malicious software, and the behavior with installers reflects this. Installers typically run only once for a short time, do not typically consume untrusted input (a browser consumes web content from Internet servers; a browser installer does not), and are often fairly simple programs. In other words, they have minimal attack surface.
Consequently, it is very unlikely that an attacker would be able to compromise an installer while it runs, so - so long as you trust its author to not be malicious - there is no need to limit what it can do. Limiting it anyway would break a lot of installers for very little gain. While sandboxie and similar are absolutely intended to be capable of containing malicious code, it is a very reasonable assumption to trust a vulnerable program's installer to not be malicious (if the user chose to run it), while still not trusting (and thus sandboxing) the installed program.


How could the string \";alert('XSS');// be used for XSS? I was using Burp Suite for some testing and I noticed that they included the following string:

\";alert('XSS');//

as an attack string for an XSS payload.

How could this string be used to execute a XSS attack?

In this case the first \ is escaping an escape to provide attacker with a un-escaped double-quote:

var x="\\";alert('XSS');//"

This is assuming the target application has a broken escape routine.


HMAC and non-repudiation This was a question on an exam:

Two persons are using a one way communication channel and the HMAC functionality (concretely HMAC-SHA1). Choose the correct statement below:

1) We can prove who the sender is, because HMAC-SHA1 uses a shared secret, which is known to both of them. Even more, the communication channel only works in one way.

2) We can prove who the sender is, because HMAC-SHA1 uses a shared secret, which is known to both of them.

3) The sender can deny that he sent the messagge, because confidentiality wasn't provided.

4) Nothing of the above.

The questions on this exam are known to be tricky. I'm thinking answer 3 or 4 is correct ( you need a digital signature to provide non-repudiation and confidentiality has nothing to do with non-repudiation), but am leaning towards the fourth answer.

Which one would you choose?

Answer 2 is nonsensical; it literally says "we can prove who the sender is because two people have the ability to create the MAC." With a MAC, either party could have created the MACed message; each party knows who created it (you know if you wrote something or not, and if you didn't the other guy did), but they can't prove that to anyone else, nor can they prove they didn't create it after the fact. To do that, they'd have to be able to prove you sent the text over the channel (including some proof it couldn't have been tampered with in transit, say by someone person 2 gave the HMAC key to), but if they could do that they might as well skip the HMAC and say "he sent it, here's proof he sent it."

The one-way channel would mean anything sent over the channel didn't come from person 2. However, you'd have to prove the message you present was in fact sent over the channel, and that no one could send a faked message over the channel (say, after person 2 had given them the HMAC key). If someone sends you something over a channel where it's verifiable that it went over that channel and only they could send something over the channel, and both these things can be proven, that channel again provides non-repudiation without needing the HMAC.

The shared element between these is that two parties can create valid HMACs, and one is trying to prove the other created a particular one. That's like having two people who have identical signature stamps, with one trying to prove the other is the one who stamped something. A MAC by itself can't help with non-repudiation, because either party can create them, leaving you needing to prove that someone is in fact the one who made a particular MAC, which is no easier than showing they made the message in the first place. So answers 1 and 2 are not right; the shared secret is why HMAC can't effectively provide this. (digital signatures, in contrast, don't involve both parties being able to create them, so they're better at providing non-repudiation). (note: non-repudiation isn't actually a technical concept, and courts often accept s/My Full Name/ as a signature on electronic documents; HMACs might in fact convince someone enough to trust the person claiming you wrote something, even if they don't technically prevent them from forging it).

Answer 3 is indeed wrong; confidentiality isn't needed for non-repudiation. One of the best sources of non-repudiation is a declaration in open court; the non-confidentiality is part of the reason why that provides non-repudiation (i.e. everyone can access the records).

By process of elimination, the answer is 4.


Storing original length of encrypted message Does storing the actual length of the message in metadata make an encrypted message more vulnerable to attack?

Yes, storing the length of the original message in plain text will make your message slightly more vulnerable to a brute force attack, but it's not significant.

Assuming a suitable key length and suitable algorithm, there will likely be so many keys that would provide the same decrypted message length that knowing the length alone will not provide a suitable means to automate an attack. The attacker will need to know more information.

I wouldn't worry about it as long as you have a cryptographically strong key (length and randomness) and algorithm.


Should we force user to HTTPS on website? Should we force website from HTTP to HTTPS , one of the method is using .htaccess:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

But what I notice is that some service like Google Translate can't translate any HTTPS website.

So what is the best practice to do it while keeping the user secure?

Force to HTTPS using .htaccess even they browsing static page
Don't force user to HTTPS automatically but the link in the hyperlinks will link to HTTPS?
Use HTTPS only while form POST or page that contain sensitive information.
Allow user to select HTTP or HTTPS
...

Set up a rule which redirects any attempt to access the site via HTTP, over to the front page via HTTPS (redirect any attempt to access anything matching http://www.example.com/* to https:/www.example.com/).

Enable HSTS.  This tells browsers to connect to your site via HTTPS in the future.

Set the secure flag on all cookies.

Make sure pages delivered over HTTPS don't load any content via HTTP.

Read the following questions on this site:

Is a forced rewrite from http to https secure? What does SSLRequireSSL add?
HSTS extra security over HTTPS
Guidance for implementors of HTTPS-only sites (Server side)
Options when defending against SSLstrip?
Strict Transport Security — max_age value
What are the pros and cons of site wide SSL (https)?


The Pirate Bay - Secret Message? The Pirate Bay will be relaunched as the timer indicates (see http://thepiratebay.se/)

But on the bottom of the site is a "secret" message. What does this message mean?

It's written in this image: http://thepiratebay.se/aes.png

Update:

The timer expired, so here is a screenshot how the site looked like:

It is a bittorrent sync key.

  The mysterious string of characters published on the original The
  Piratebay domain is a BitTorrent Sync key. With the key it’s possible
  to gain access to a shared folder containing The Piratebay torrent
  database.

  Yesterday  the original The Piratebay domain thepiratebay.se came
  alive again. Besides a pirate flag image, hosted by the Isohunt, the
  site showed the amount of time elapsed since the Swedish police raided
  the datacenter in Sweden where the Piratebay was (partly) hosted. The
  site also showed an AES key which according to the Isohunt Twitter
  account is a BitTorrent Sync key, which allows to share folders.

  The folder shared with the key contains all .torrent files of The
  Piratebay, and a readme file with the text:

    -Place your stuff in the right categories
    –Keep the 6 categories that TPB had- Audio, Video, Applications, Games, Porn and Other
    –
    IRC: http://webchat.freenode.net – #tpbbtsync

    If they cut off one head, two more shall take it’s place…

    Hail HYDRA!

  The latter refers to a Greek mythological figure we reported about
  earlier today. The fact that the The Piratebay database is now
  distributed over Bittorrent Sync might indicate the site will never
  come back in it’s original form.


Should admin passwords be on a different database than regular passwords I was trying to figure out best practices for storing admin user's passwords and found a stack overflow suggestion to "use separate login pages for users and admin using the same DB table (to stop XSRF and session-stealing granting access to admin areas"). Up until this point I was planning on using 2 separate tables(AdminUser/User) on my password database (with salt/hash entries) that get authenticated on different sub-domains. Is there a reason why I would use the same table for both set's of hashes?

Is there a reason why I would use the same table for both set's of hashes?

Not really. You can use a separate table if you want. From a development perspective it might be slightly easier to use a single table (since you can re-use any stored procedures) but from a security perspective it doesn't increase or decrease your attack surface in any meaningful way.  There is no harm with either decision.

Just be sure you are only storing the password hash and salt, and that you generate a new salt each time.


Why some routers ask for PIN but can't be cracked using PIN-based attacks? I've been working with WPS assessment tools like Reaver and Bully for some time and i could successfully crack my router's PIN code and find its password on both QSS PBC and QSS PIN code. when each of those options was enabled on my router, it appeared in the scan results of WASH command in Linux as a WPS-enabled router that can be cracked.

there are some other routers that when i try to connect to them, it first asks me for PIN code and then the security key but when i scan them using WASH or other such tools, they never show up as a WPS-enabled router. even when i ignore that and try to hack it's WPS pin using reaver or bully, they stick to the first pin even when my signal is 90% strong. the only way that i know that router has PIN is with this method.

aren't they vulnerable to such attacks? how do they do that?

It would seem that some router manufacturers can detect brute force attempts and enter the router into a "lock down" or "safe mode".

http://kb.netgear.com/app/answers/detail/a_id/19824/~/how-do-netgear-home-routers-defend-wifi-protected-setup-pin-against-brute-force

  NETGEAR home routers will protect themselves after several failed
  attempts to authenticate as an external registrar by entering a
  lock-down state. During the lock-down state, all WPS attempts using
  the Router PIN will not work. The router will return from the
  lock-down state after a predetermined time period.


I received an phishing email from myself So today when I was checking my spam folder on my outlook account, I noticed I had received an email from my own address.
The email looks like a typical scam:

Claims to have installed a RAT on my system
Claims to have footage of me pleasuring myself
Demands that I pay him money with the cryptocurrency DASH

According to haveibeenpwned, my email was found on the July 2018 Animoto breach.
I have never used this site. I have used a similar service called 'PowToon', but as far as I can tell, they aren't related.

I have already:

Changed the password of my Microsoft account (and made sure 2FA is still active)
Made sure there isn't any suspicious devices or login activity registered
Ran a virus scan on my system (Nothing found)

At this point, I'm pretty sure this is just a spoofed email address, but I want to guarantee everything is alright.
This is the header of the email:
https://pastebin.com/LD92Y3m2
Am I safe? What other precautions should I take?

Does it look like ...

  Good day.
  I excuse for my English, I am from China.
  I put the malicious program on your OS.
  Then all your confidential info appertains to me. Additionally I received a little bit more compromising evidence.
  The most important evidence that I stole- its a record with your wanking.
   I set malicious software on a porn site and after you loaded it. The moment you picked the video and tapped on a play, my malicious software immediately downloaded on your OS.
  First of all, your web cam started working, then my software captured your screen. In next few days my malware grabbed all your social and email contacts.
  If you wish to erase  the videotape- transfer me 295 usd in BTC(cryptocurrency).
  I provide you my Btc address - 12caGmborZYaWM5hc26b3ueg19XD1XGibh
  You have 30 h. from this moment. If I get transfer I will eliminate the videotape forever. Otherwise I will send the record to all your contacts.

If yes this is a indeed a typical scam.

No any personal information is stolen. Attackers often speak about countries that are known for hacking at a big scale (China, Russia etc) just for psy reasons. And they hope to get money out of it with using manipulating words like 'We have X of you' to get the attention of the victim and when they receive something, later you will get a second email where is stated that you'd been recorded in another video because they know they targeted the right person.

(The example is real though)


Pentesting my Own Server File Upload I recently created my own IIS  server (set on version 7.5) and I was going through checks to make sure my webdav is not vulnerable. My users need to upload files to their individual accounts and can access them via a direct server link, and at the moment I have disabled all server-side/dangerous scripts from being uploaded (php(php3,php4,php5, etc) perl, net, asp, htaccess files, etc) but I still allow images, exe's, and html files to be uploaded.

I only disabled the extensions from being uploaded but so far I have not found anything vulnerable by doing this. Does this cover possible File Upload attacks?

You're using PHP? There are a couple of things to keep in mind. I wrote this article earlier this year which covers file uploads and other topics. Creative Commons so feel free to save a copy, modify, and share as you'd like:
https://keenot.es/read/thwarting-basic-web-application-attacks

"Encrypt your files, store them in a random filename in a specific non-webroot directory, and use a database to keep track of their metadata (type, filename, size). Use a script to deliver them from the filesystem, and use header() calls and rewrite directives to trick browsers into treating them like images. Cache heavily to prevent resource exhaustion."

You don't necessarily need to encrypt them; gzip compressing them or base64 encoding them will prevent execution in case they manage to directly access the file. I do recommend abstracting the filename that people see away from what is actually present on the filesystem. While this might be objected by people as a form of "security through obscurity", but if you store everything as a .txt file, nothing will ever execute through accessing an uploaded file.

One very important thing: Don't rely on the file extension or the user-provided $_FILES['abc']['type'] value. They can be spoofed.


content of Informational packets in ipsec between phase1 & phase2 I want to know about Informational packets in IKE negotiation between main mode & quick mode. what are the contents those packets will contain?

here i am uploading the screen shot of ike negotiations

You can go through the rfc 2409 for IKE.
It gives the details about why ,where and when informational packets are required.
Hope it helps!!

Link to IKE rfc2409


can ssh passwordless public key authentication be ok if combined with a VPN? Having a debate with a coworker about the merits & faults of public key authentication with ssh.
I'm basically wondering what all the possible merits and faults are, especially in regards to passwordless private keys.

In our environment, ssh is not accessible to the outside world. Meaning that you would have to get in through a VPN before you would be able to ssh to anything. For arguments sake, lets assume this VPN uses the same account backend, so a password used for the VPN is the same password for your account when connecting via ssh.

One argument is that passwordless ssh keys have no use. They are insecure and if compromised would let an attacker access all our systems.

My argument is that further security measures make that argument moot. Because you must first connect through a VPN, having the private key doesnt get you in the front door.

Is this argument valid? Are there any other arguments for or against?

This is a typical defence-in-depth question. Why do I need X if I already have Y and Z in place?

The common answer is that your security is usually as good as its weakest link. In your case, your one and only security mechanism appears to be your VPN. This is your strongest and weakest link. In your opinion it is enough protection and no additional protection is necessary.

Perhaps you're right. It might be good-enough. At home, I only have one lock on my door. I know two locks would be stronger, but the cost/hassle of installing another lock, and having to use two keys is not worth it for me. I don't have much worth stealing anyway. But if my lock or your VPN get compromised, then we're left with little or no protection. The VPN security can be compromised in a variety of scenarios, some of them are as trivial as someone accidentally making a stupid configuration change that leaves your VPN open for example. Also, even if the VPN is 100% waterproof, an employee might decide it's a great idea to plug in a wireless router to your network so they can use their iphone more easily, leaving a chance for getting into your network without the VPN. It of course depends on your organisation, the setup and so on. The basic principle is the same.

You'd have to consider the strength/weakness of your protection against the cost/worth of your data. Then add in the 'residual cost' of adding and managing another layer of protection, and see if it's worthwhile for you. Installing another VPN gateway - so you have two VPNs - might be costly and inefficient. Adding passwords to your ssh private keys might however be easy and cheap enough to be worth it.


Is my Google account only as secure as the recovery email? Regardless of how careful I am with my account, is it not only as secure as the recovery email registered with it?

Yes, or your recovery phone #.  There was a story recently about somebody convincing verizon to switch their phone number to a hacker's phone.   They used that to compromise the gmail address.

Fortunately, it's not always obvious what the recovery email or phone # is.


snort ignores packets with matching src/dest IP address This is my rule:

alert udp 192.168.1.1 4000 -> 192.168.1.1 7000 (msg:"This rule doesn't work"; sid:1234567;)

I am running snort against a precaptured packet file where there are UDP packets that match the rule given above. However, they are ignored by snort and do not actually make it into the results file. Why does snort ignore those packets and how can I force snort to recognize those packets? Since they match the rule (above) in my rules file, I would think they'd show up.

Preamble: I wanted to just add a comment first, as it's still rather unclear what might be causing your problem from the information you provide, but I ran out of space reserved for comments, so here goes my suggestion (no guarantees it's actually the case):

On what kind of a capture file you're trying to run Snort rules through is rather unclear both from your question, as well as your later comments. It's however possible that you're running your replay in a single packet capture mode, but from a file with many pcaps. That's what flag -r implies (is the same as using -pcap-single=<file>) and your comment that it works on some rule and not the other suggests this might be the case also (if in one instance the first packet capture would match your rules, while in another the pcap that would match your rules might not be the first one in the list of many). To make Snort replay process multiple pcaps from a single capture file, use -pcap-file=<file> instead.

To be sure this is the case, you could test that with a -pcap-no-filter flag and see if it iterates through all of them in the output. Other command line arguments relevant to your use-case are listed here.

Alternatively, you could change your rule to match all packets, and see how many results it returns:

alert udp any any -> any any (msg:"This should match all UDP packets in an input file";)

Other than this, I don't see any problems with your snort rule you gave in the example, and it follows Snort rules form properly.


Has any exploit leveraged a Video Driver flaw in WebGL? Microsoft delayed support for WebGL due to the fact Javascript could exploit driver weaknesses.

In the years that have past, in WebGL's adoption, are there any exploits of WebGL that supports their original position?

Absolutely. Quite a few, in fact. A quick web search turned some up in just a few minutes. These are the CVEs with a link to further information from NIST, the description, and the CVSS score. They are all related to WebGL handling in various popular browsers. Note that these are all vulnerabilities, not exploits, as there is a significant difference. A vulnerability is a security bug, whereas an exploit is anything that actually takes advantage of said security bug. While I haven't looked for an actual exploit for these CVEs, the fact that there were vulnerabilities means an exploit is absolutely possible.

CVE-2017-5112 (8.8 base score)

  Heap buffer overflow in WebGL in Google Chrome prior to 61.0.3163.79 for Windows allowed a remote attacker to execute arbitrary code inside a sandbox via a crafted HTML page.

CVSSv3: AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

CVE-2016-2824 (8.8 base score)

  The TSymbolTableLevel class in ANGLE, as used in Mozilla Firefox before 47.0 and Firefox ESR 45.x before 45.2 on Windows, allows remote attackers to cause a denial of service (out-of-bounds write and application crash) or possibly have unspecified other impact by triggering use of a WebGL shader that writes to an array.

CVSSv3: AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

CVE-2014-1502 (6.8 base score)

  The (1) WebGL.compressedTexImage2D and (2) WebGL.compressedTexSubImage2D functions in Mozilla Firefox before 28.0 and SeaMonkey before 2.25 allow remote attackers to bypass the Same Origin Policy and render content in a different domain via unspecified vectors.

CVSSv2: AV:N/AC:M/Au:N/C:P/I:P/A:P

CVE-2013-1729 (2.6 base score)

  The WebGL implementation in Mozilla Firefox before 24.0, when NVIDIA graphics drivers are used on Mac OS X, allows remote attackers to obtain desktop-screenshot data by reading from a CANVAS element.

CVSSv2: AV:N/AC:H/Au:N/C:P/I:N/A:N

CVE-2012-3968 (10.0 base score)

  Use-after-free vulnerability in the WebGL implementation in Mozilla Firefox before 15.0, Firefox ESR 10.x before 10.0.7, Thunderbird before 15.0, Thunderbird ESR 10.x before 10.0.7, and SeaMonkey before 2.12 allows remote attackers to execute arbitrary code via vectors related to deletion of a fragment shader by its accessor.

CVSSv2: AV:N/AC:L/Au:N/C:C/I:C/A:C


Why am I unable to capture LM & LMHASH? I'm running a simple test of Metasploit's auxiliary/server/capture/smb.

It works, but both LMHASH & LM are empty

[*] SMB Captured - 2016-09-27 16:49:31 +0800
NTLMv2 Response Captured from 172.16.177.40:49332 - 172.16.177.40
USER:aaron DOMAIN:CORP OS: LM:
LMHASH:Disabled
LM_CLIENT_CHALLENGE:Disabled
NTHASH:xxx
NT_CLIENT_CHALLENGE:xxx

I have been trying this on Windows 7, 2008 and 2003, none of them works.

Any ideas?

LM hashes over a network are disabled by default on post Windows XP systems.

You will have to use a group policy/local security policy to enable that behaviour again. Changing the defaults was done obviously to prevent weak hashes being sent over the network for authentication. Microsoft figured that by the time a corporation had Windows 7, the environment wouldn't have a Pre-XP machine, so there was no need for compatibility.

LM Hashes will also not be generated when:

User has a password that is too long for the LanMan hashing scheme
LM hash generation was disabled completely by group/local policy


Is there a standard recommending physical destruction of a machine? I had a discussion with a customer who requires the physical destruction of the PC (a standard laptop) which is holding their data. After clarification, they mean the destruction of the entire laptop, not the disk only (the disk is removable so it would not have been a big deal).

I am putting the cost and ecological aspects aside - is there a standard which encourages, recommends or forces the physical destruction of a complete PC grade device? I could not find anything in my go-to places (ISO, NIST, ISF).

I can understand the case of devices where the data is held in embedded areas not immediately identifiable - destroying everything is a solution to make sure no residual data could be left aside. This is not the case of that standard laptop.

EDIT: Following comments and answers, I would like to clarify that this company is a large, serious one. They know how computers works. They must have some SOP which dictate this, or the security officer on duty had a bad day.
I am not trying to guess why they have such a requirement but whether there is a  case where this follows a standard.

All the documentation I've ever seen on the subject is very clear, you just have to do a certified wipe of the storage medium. RAM, screen, graphics, etc. just generally aren't listed. With that being said, the official DoD Manual regarding the Protection of Classified Information (from 2013, which is latest I could find) prescribes that methods used for

  clearing, sanitization, or destruction of classified IT equipment and media

can include

  overwriting, degaussing, sanding, and physical destruction of components or media

It goes on to state that

  Classified IT storage media (e.g. hard drives) cannot be declassified by overwriting. Sanitization (which may destroy the usefulness of the media) or physical destruction is required for disposal

But again, that only applies to storage media, I couldn't really see a reason why the complete destruction of the entire equipment would be necessary if they don't even do it with classified materials. But there may be classified procedures that prescribe destruction of the entire unit, I wouldn't know.


Simple and secure remote installation method that accepts input via a web page? When installing software on a remote server: Is it possible to let the admin (i.e. the user that installs the software) define admin username and password via a HTML page, in a secure manner?

Clarification: When one installs e.g. WordPress, parts of the installation scripts accept input via a web page see this example — and notice the password input fields (the image is from this WordPress page).

However, if the installation is done remotely (for example, if you install WordPress on an AWS EC2 virtual host), then I think that by default anyone would be able to access the installation script web page. An evil user could access it before the actual admin, and define username + password and thus hijack the remote server for a short while. (The evil user could be a bot that scans the internet for half-finished WordPress installations.)

Accepting input via a HTML page, when remote-installing software, seems inherently unsafe. But it's fairly user friendly. Is there no way to do it in a secure manner?

Some unconclusive thoughts on the question:

One workaround would be to block the HTTP(S) port in the firewall (on the remote server), and access the installation web page via a SSH tunnel. However this seems like an almost user-hostile installation requirement.

Another workaround would be to have any shell script parts of the installation script print a randomly generated password that the person that accesses the installation web page would have to specify. This seems somewhat more user friendly.

Perhaps the best solution is to have the admin define his/her username and password via the Bash shell? (I.e. over SSH, not via a web page). However then what if the admin wants to login as admin via OpenID, e.g. Gmail? (Gmail is very secure if you enable 2-step verification.) That cannot easily be handled via a Bash script...

Perhaps the best method would be to let any shell script part of the installation print a URL that includes the server address, plus a magic one-time password — then the-person-that-does-the-installation would only need to copy the URL and paste it into a browser. And then the installation could proceed from within the browser.

Many such apps do not have a shell script part, and do everything through a PHP/Perl script instead.

I think we must consider what information does the installation have about who its master is. Certainly not "anyone who can connect through HTTP", since as you say, a bot might just scan for half-baked installation.

The simplest thing would be to require the same password used for FTP in order to proceed with the installation. This could be done by generating a random name such as .htABCDEFGH.txt and reading a cleartext password from it. In most installations the creation of such a file is only allowed for the FTP user, and the file itself cannot be read except through FTP.

A variation could be to let the installer choose a password, display its MD5 salted hash on screen, and require the hash itself to be saved server side, e.g.

To begin installation, you need to save the password you've
just chosen in a text file called password.php containing the
following lines:

<?php
    $INSTALLPWD='65cb963e760378ab0ee97e50ca70084f9555adb9';
?>

You need to do this via FTP, to prove you own the FTP account
used to deploy this installation.

Here again, unless one had the FTP password, one could neither write nor read the hash (even if the hash could be read, it could not be inverted).

For those installations that come pre-packaged with no FTP account (a popular choice in CMS web space providers), the password.php also could easily be generated by the CMS allocation script. After purchasing the CMS installation, you would be supplied not only with the link to the install and admin panel but also with the installation password matching the newly created password.php file.

Installation username would be possible in the same way, but it seems overkill. The installation password would only need to be used once, and briefly at that, to establish a chain of trust and let installation proceed. Once that's secured, you could define any user and password you wished (and delete the password.php and any setup directory/script, too).

For added security, the password.php script should not be used unless the installation is yet to begin. A fully installed system ought to ignore that file, to avoid anyone with a small exploit capable of creating one short arbitrary file to leverage this into the capability of restarting the whole installation.


csrf token placement I know there are multiple places to put a csrf token and the most common one is to put in a hidden input field in a form. Second is in a cookie with the httpOnly flag. What I want to know is, is there an opposition to placing it in a javascript variable so that it can be used every time a post request is made to change data.

Otherwise you have to place it in a form’s hidden field for every form and it could be a problem if the form is dynamically generated.

You can dynamically add the CSRF token to forms via JavaScript. But you need to be aware of a couple of issues:

If you have cross domain forms you need to be careful that your JavaScript code doesn't add CSRF tokens to them, as it would leak the token.
If your application requires users without the highest level of privilege to create forms, then they can perform CSRF attacks as tokens will automatically be added.
HTML injection will lead to CSRF via injection of a form, which increases the impact of HTML injection a bit. In the same manner, if you allow a subset of HTML for some users, and your filter has a vulnerability that allows creation of forms, you will be vulnerable to CSRF.

Unrelated: CSRF tokens always need to be in two places; the most common approach is storing them server-side in the session and additionally in another place (eg submitting them in a form). That seems to be what you are referring to in your question. With this approach, storing the token in a cookie instead of a form will not work (it will always be submitted and will validate against the server-side token). Storing the token in a cookie would be used in place of storing it server-side. You still need to submit it eg via the form.


What are the main vulnerabilities of TLS v1.1? What are the main vulnerabilities of TLS v1.1? Actually, no RFC describes v1.1 vulnerabilities, neither what pushed them to change to the new protocol 1.2 except the description given in section 1.2 of RFC 5246.

Please note that I do not mean implementation vulnerabilities, I am only looking for issues with the protocol itself.

There is no "real" security issue in TLS 1.1 that TLS 1.2 fixes. However, there are changes and improvements, which can be argued to qualify as "fixing". Mainly:

The PRF in TLS 1.1 is based on a combination of MD5 and SHA-1. Both MD5 and SHA-1 are, as cryptographic hash functions, broken. However, the way in which they are broken does not break the PRF of TLS 1.1. There is no known weakness in the PRF of TLS 1.1 (nor, for that matter, in the PRF of SSL 3.0 and TLS 1.0). Nevertheless, MD5 and SHA-1 are "bad press". TLS 1.2 replaces both with SHA-256 (well, actually it could be any other hash function, but in practice it is SHA-256).
TLS 1.2 allows the use of authenticated encryption modes like GCM. This can replace the more traditional CBC encryption mode, which has historically been a source of many flaws. Properly implemented CBC encryption is still fine; however, it appears that properly implementing CBC encryption is easier said than done. Getting GCM right seems a more readily achievable goal.
TLS 1.2 mandates support for TLS_RSA_WITH_AES_128_CBC_SHA whereas TLS 1.1 required only TLS_RSA_WITH_3DES_EDE_CBC_SHA. Thus, if you use TLS 1.2 then you have a "guarantee" that AES encryption will be available. (This is not in fact completely true: the guarantee holds only as long as no "application specific profile" mandates otherwise. Also, you will get AES only if both client and server support it, and if they both support it, then it is available, regardless of whether TLS 1.1 or 1.2 is used.)

To summarize, it's not a bad idea to patch your servers to support TLS 1.2 and configure them to prefer it over TLS 1.1, but there is no real flaw in TLS 1.1 that needed fixing and would make a switch to TLS 1.2 mandatory or even recommended. The main drive for TLS 1.2 adoption is the usual pavlovian craving for anything new and shiny.


Javascript and jQuery not secure over https I am building an ASP.NET MVC 3 app which will run in Azure. Everything was working well, until I switched to https. Now most of my jQuery plugins and some other javascript are not secure.

I'm using the Datatables library as well as jsTree, watermaks and breadcrumbs. Most of this script is to make our site look appealing.

Is there a way to make this secure? Or is it time to move a very lean javascript site?

Thank you for the help!

I serve my entire site over https, jquery included.

The trick is to use a CDN for jQuery that supports https, or deploy the code to your own site and include it from your domain. In code, for example:

<script type="text/javascript"
        src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

Works fine and will show up as a secure element.

Now, is that actually secure? Well, I generally trust Google APIs as a CDN and the content I have is not that crucial - however, if I wished to ensure I had total control of the jQuery deployment, I could just host it myself:

<script type="text/javascript"
        src="https://mysite.com/static/js/jquery.min.js"></script>

Both will work fine. Bottom line: you do not have to deploy jQuery from the CDN, however, if you want to, at least one of them supports https (others may, I looked no further).

An aside to consider - one of the reasons for accessing code from the CDN was to always have the latest version of the jQuery code. Deploying it yourself, you do lose this immediacy - you also gain a slight buffer against breaking updates, although hopefully that shouldn't be an issue.


Simple explanation of how Dirty COW works? I am sure many of you remember the XKCD Heartbleed Explanation. In the same spirit, I would like to request an explanation for how the latest branded vulnerability, Dirty COW, works.

Is it possible to explain it to someone like me, who have no idea how the Linux kernel works or what a "copy-on-write" is? Please note that I am not looking for an explanation of what it does, but of how and why it works.

You and 3 other people are studying for a test, using the same notes.

You say "I gotta go, I need to make a copy of these notes for myself that I can mark up... let me go make a copy!"

You take the notes to the photocopier, copy them, alter the original, and then take the modified original back to the rest of the group.  That modified version is bad; you've altered some answers to be wrong.

The rest of the group is left studying off of a bad version of the notes, while you take the good version home.

You pass the test.

They fail.

The only nuance between this example and Dirty COW is that in Dirty COW you aren't supposed to be handed the original; the kernel makes the copy for you.  But there's a race condition that mistakenly gives you access to the original when you ask for a copy.  "Race condition" means "you can sneak in access to something you shouldn't have access to."


What is the difference between active reconnaissance and scanning/enumeration I have just started studying for CEH exam v8 and I am trying to get the core of so called hacking phases.

I could not totally understand the practical difference between the first two phases. In recon a pentester should get all available info from the target. As far as I can see it would be expected he uses tools like nmap in order to do that. For example, he could use nmap to discover how many machines are in the network.

On the other hand if he is using nmap to understand the network would not he be scanning it?

I know it is a silly question and is just about a matter of definition, but I really want to have a systematic understanding of pen testing.

By the way, I am using "CEH all-in-one" by Matt Walker as a main resource.

Active Recon -- doesn't matter if touching or not touching any
infrastructure -- the important part is the recon comes first in
order to determine the target(s) which normally consist of company
and partner names, employee names, identification of technology
vendors in use, identification of public IP ranges, primary
top-level domain names, email address structure, et al (think mindmaps or scratch pads)
Enumeration -- this is the second stage that produces a
narrowed-down list of specific IP addresses, port numbers, hostnames, bulk
lists of email addresses, etc to be used in later stages (think structured ASCII lists or relational databases)
Scanning -- the last stage automates against the enumerations to get
further information. It is typically a client-server
request-response paradigm using tools such as nmap, curl, SET,
msfconsole, et al where the responses include the desired
information (think robots that do your dirty work for you)


HPKP and multiple SSL certificates Some weeks ago, we enabled the HTTP Public Key Pinning header on our website. As per the specification, we included not only the SHA-256 fingerprint of our current RSA key, but also that of a backup (RSA) key.

Now, however, we would like to add a second (ECC) key to our site. We set up a testing server with two self-signed certificates (one RSA, one ECC). When watching the TLS handshake in Wireshark, it seems the server only sends one certificate (the ECC one). Using the -cipher option of openssl s_client, however, I can prove that both certificates can be delivered by the server (by forcing OpenSSL to either only use aRSA or ECDSA cipher suites).

In my understanding, when a visitor with a fairly modern browser is going to visit our production site, the server would present the ECC key only and the browser would complain to the user that it does not know that key, as it was not included in the HPKP header sent at the last visit. Is there a way to make the server (Apache 2.4.7) always present both certificates? Or does the browser somehow manage to obtain the (known) RSA key from the server?

Is there a way to make the server (Apache 2.4.7) always present both certificates?

No. This is by design in TLS. The server only presents the certificate after a common cipher suite has been negotiated.

And the cipher suite determines the certificate type (ECDSA or RSA). Then the server will know which of the certificates to use.

EDIT: See older question:
Here's one of my older answers to a related question:

SecSE:How does a browser choose which certificate to use if my web server has multiple certificates?


Verify Mac firmware is not hacked...how to do? I have a late model Mac computer.  I allowed someone to plug in a USB drive, and my network activity changed afterwards.

Normally, Little Snitch will report every app that uses the internet.  Every time my router light flashes, Little Snitch shows the app (or system) that is doing it.

After I allowed this person to insert his USB drive into my Mac, the router shows an occasional flash or two that does not show up in Little Snitch.  Even Activity Monitor shows the data being sent out, but Little Snitch doesn't show the app doing it.

I inserted my system disks and did a restore from a time machine backup that occurred before the USB was put in.  I completely formatted and restored the drive.

The router and activity monitor still show the occasional network activity.

So my questions are:

How can I find out what is sending out the data?
Since I restored from an earlier time machine backup, I can only assume the firmware was modified...so how do I verify it wasn't?  Is there a way to run a check sum or hash check?  Is there something else I should be checking or considering?

I'm assuming this person was able to observe my admin password and would have full access to the machine.

At this point I'm considering getting a new mac altogether as I don't know how to stop or at least determine what this outbound traffic is.  I'm grateful for any help (because new Macs aren't cheap).

Try using Wireshark to do a packet capture and see whats data is being sent out.

Then you should at least be able to tell if its anything to worry about.

Alternatively try using the netstat -p command that will list what programs are currently listing on ports and you can see if there is anything strange.


How can I spoof the Mimetype of a file upload? There are posts that says php mimetype isn't secure, or can be bypassed. How do people spoof the mimetype?

If you were creating the header on the upload request programmatically, you can declare the headers, etc. An explanation which includes some code samples.

You should go beyond the mime type and check the content. E.g., if you allow an image upload, do a conversion of the image on the server and do other checks as well.

You may want to check out this post on SO:

  The "signature headers" help you to decide what kind of image format a
  file tries to impersonate. In a next step you could check if the rest
  of the contents are compliant with the underlying image format. This
  would guarantee you that the file is really an image file of that
  specific format.

You may also be interested in this article on GIFAR:

  They call this type of file a GIFAR, a contraction of GIF and JAR, the
  two file types that are mixed. At Black Hat, the researchers will show
  attendees how to create the GIFAR while omitting a few key details to
  prevent it from being used immediately in any widespread attack.

  To the Web server, the file looks exactly like a .gif file, however a
  browser's Java virtual machine will open it up as a Java Archive file
  and then run it as an applet. That gives the attacker an opportunity
  to run Java code in the victim's browser. For its part, the browser
  treats this malicious applet as though it were written by the Web
  site's developers.


Besides Browsers, what other Technologies are Impacted by the Deprecation of SHA-1? I am aware that from January 2017, browsers will start rejecting, or at least warning, users browsing sites offering SHA-1-signed certificates.

Would a service be impacted if the system does not have any interaction with browsers?

In other words, what other technologies besides browsers will be impacting services over the use of SHA-1-signed certificates?

Would a service be impacted if the system does not have any
  interaction with browsers?

Not by the browser sha-1 deprecation. However, sha-1 is used and being deprecated on many other scenarios. Digital signatures, TLS communications in general (clients may start refusing it soon or already refusing it), authentication systems. It should be abandoned as soon as possible, because unlike browsers, in other scenarios the deprecation might not be so well coordinated and planned and just hit you one day.


Is nonce useless when user input is reflected within an inline script? I stumbled upon a web app which is accepting user input and putting it into a variable within script tag.
The script tag does have a nonce attribute.

As am working on bypassing the XSS filter, I had this thought that this practice of reflecting user input within an inline script with nonce attribute beats the purpose of using it.
Is my understand correct or am I missing something here ?

reflecting user input within an inline script with nonce attribute beats the purpose of using it.

That depends on the type of injection you achieve.
If you manage to construct an XSS vector that stays within the nonce'd script tag, you're right, it's useless. You can just inject additional script code via e.g. "; alert(); //.
But if you're forced to close the script tag (say, because <, > are allowed but " is not) via e.g. </script><script src=evil.example>..., then the CSP works out, because you can't successfully inject new scripts without knowing the correct nonce.
Note that in the past, nonce exfiltration techniques and other nonce-related browser bugs have come up that may have rendered the second case exploitable, too. Have a look at this talk by Spagnuolo/Weichselbaum.


Why do email server/clients block executable attachments? If I send an email with an .exe attachment to an Outlook recipient, the email client blocks the attachment and the recipient has no way of overriding this security setting (short of making certain changes to the registry). If I send the same email to a Gmail recipient, the email is refused by the server.

Why are they being so strict? Is there a possibility that the attachment may execute automatically, or is it simply to protect naive users from explicitly executing an untrusted attachment? Would it not be sufficient to use a big, fat warning aka "Are you really sure you want to do this?"

Of course, I can upload my .exe file to a file sharing service and provide the link in the email. Why is this considered any more safe than an attachment? A malicious scammer may do the same thing.

EDIT: I ask this question partially to learn whether it is safe to turn the feature off (by modifying HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security\Level1Remove). I take it from the answers that this is safe for me personally, but probably not on the administrator level.

Would it not be sufficient to use a big, fat warning

Sure, if they worked. Most people tend to just "click away the annoying" without thinking.

Blocking executables means that attackers can't do something like sending totallylegitfile_really.pdf.exe It's a very basic social engineering defense to block executables.

Attackers have to go through the extra steps like you described, and so does the end user. Those extra steps give the user a little more time to think about whether this whole interaction makes sense. That extra time is key.

If I spoof the HR department's email (or make it look similar) and send out staff_bonuses.pdf.exe and it hits the user's inbox, there is little to protect the user. One click is all it takes. To do the same as an attacker, I would have to upload it somewhere then send the link. That's going to get more than a few people curious about why HR is using some 3rd party file hosting service.

It's a basic defensive measure. It raises the threshold of difficulty for attackers forces them to use 3rd party tools and gives end users a little more time to think.


How does a government shutdown Internet (and how to bypass it)? Recently the government of India shutdown Internet in the state of Gujarat due to riots. How does this "internet shutdown" work? How can someone who is in the country circumvent this? What can a person, who is outside of this "internet shutdown" zone, do to help restore access?   Any help will be much appreciated.

Usually, the government will physically disable (usually just by unplugging or powering down) critical routers within their jurisdiction. It is not possible to bypass these, as there is a physical barrier that you cannot reasonably control.

Unfortunately your only options are to either find an ISP that the government does not control (if that exists, they won't be publicizing themselves, otherwise the government will shut them down, so you will probably have to look pretty hard to find one) or to find a 3/4G carrier who has reception in your area.


urbanairship basic Authorization found in Mobile Application Outgoing Traffic I was testing an android application using Burp suite. When I opened the android application, an app "Outgoing Traffic" log was added in Burp suite Site map. The API request is:
PUT /api/channels/<channel-id> HTTP/1.1
Content-Type: application/json
Accept: application/vnd.urbanairship+json; version=3;
User-Agent: com.test.app (Custom; 5.1; UrbanAirshipLib-android/9.5.2; W_Ps1DDsQAypC5_UuKOeyg; en_US)
Authorization: Basic <auth-key>
Host: device-api.urbanairship.com
Connection: close
Accept-Encoding: gzip, deflate
Content-Length: 227

{"channel":{"device_type":"android","opt_in":false,"locale_country":"US","locale_language":"en","background":false,"tags":[],"set_tags":true,"timezone":"America\/New_York"},"identity_hints":{"user_id":"<user-id>"}}

The request has Authorization: Basic <auth-key> header while I opened the app ( Without any login). Is it fine to have a public Authorization key, because it's returning this response below:
HTTP/1.1 200 OK
Date: Wed, 10 Mar 2021 13:21:16 GMT
Location: https://device-api.urbanairship.com/api/channels/<changel-id>
Content-Type: application/vnd.urbanairship+json;version=3
Content-Length: 63
Via: 1.1 google
Alt-Svc: clear
Connection: close

{"ok":true,"channel_id":"<changel-id>"}

I found another GET endpoint of this when I tried to visit via Browser. It showed basic auth for login but when I used the Authorization token, it returned pieces of information to me. So, I am a bit confused about this request. Can anyone elaborate on this?

Using a hardcoded/shared keys for use cases like this is definitely not the correct approach. Are you sure the client didn't make a client auth request before this?
If it is indeed shared/hardcoded keys, what are the risks of doing so?
Well, that depends on the scope of that key. If the key can only share the public information, you probably are not losing a lot. If the key can be used to fetch private/personal data, then that is absolutely dangerous.
The ideal solution would be to use public/unauthenticated endpoints for public data if you want to avoid having users to log in.


Reporting vulnerability in school computer system While at school I stumbled upon a folder that holds a program that can control the schools computers, such as shutting them down, logging everybody off, controlling what files they can access.

How should I approach my School Board / School about the problem? Because I do want to report it to them.

At the start of the year everybody had to sign a contract not to "hack" or "exploit" the computers. Yet, this vulnerability is very dangerous if it gets into the hands of the wrong person.

In that order, the first hit solves it:

If your school has a bug bounty program, report it there
If your school has a sysadmin, report it there
If your school has an IT board, report it there
If your school has an IT teacher, report it there
Report it to the principal.

From the wording of your question, it seems you didn't intrude the systems or otherwise circumvent security policies.

If you did though, you'd be better off suggesting that (what you did) could maybe be done and they should check for themselves or give you permission to check.


Windows 7 EFS - connot decrypt I have some files on my laptop that were accidentally encrypted, I think by Visual Studio.  I didn't even know that was possible.  Anyway, the way I discovered they were encrypted was that I changed my password and thus could no longer access said files.  I could not take ownership of them and running cypher /u did not work either. Found out all this after running chkdisk and virus scan and various other tools to make sure the files weren't corrupted (see: 6 hours of my life).

If I go into the properties for the encryption it shows me there's a recovery policy with a specified user and thumbprint.  Can I install that user's certificate and then perform the decryption?  Or does the user actually need to log in and do it?

Operating System:  Windows 7

Encryption method:  EFS

If settings are default (ie, not using reversible encryption for password storage), then the user would have to log in to decrypt.  In fact, if the user was ever to have their password administratively changed, then the files would become unrecoverable as the key would be lost.


Hello Request TLS Handshake Message in Session ID based Session Resumption I tried to reuse the session using session ID...

$openssl s_client -connect www.google.com:443 -reconnect -no_ticket

But, why i got Hello Request TLS message?

Is this mean that, My session key was updated while session reuse ?

Wireshark Bug.
I think this is bad output in WireShark.
Because anything after "Change Cipher Spec" is encrypted.
I think it is a bug in Wireshark that still tries to parse the encrypted bytes as unencrypted and then outputs garbage.
Add the private key to WireShark and try again.
See:

https://wiki.wireshark.org/SSL
https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/